Merge pull request #117328 from humblec/uber
dependencies: update gh/go.uber.org/{atomic,multierr}
			
			
This commit is contained in:
		
							
								
								
									
										4
									
								
								LICENSES/vendor/go.uber.org/multierr/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								LICENSES/vendor/go.uber.org/multierr/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| = vendor/go.uber.org/multierr licensed under: = | ||||
|  | ||||
| Copyright (c) 2017 Uber Technologies, Inc. | ||||
| Copyright (c) 2017-2021 Uber Technologies, Inc. | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -20,4 +20,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| THE SOFTWARE. | ||||
|  | ||||
| = vendor/go.uber.org/multierr/LICENSE.txt f65b21a547112d1bc7b11b90f9b31997 | ||||
| = vendor/go.uber.org/multierr/LICENSE.txt 721ac51ede11efb667ff53a866be23c4 | ||||
|   | ||||
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							| @@ -227,8 +227,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/metric v0.31.0 // indirect | ||||
| 	go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	golang.org/x/mod v0.10.0 // indirect | ||||
| 	golang.org/x/text v0.9.0 // indirect | ||||
| 	google.golang.org/appengine v1.6.7 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.sum
									
									
									
									
									
								
							| @@ -747,14 +747,16 @@ go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI | ||||
| go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc= | ||||
| go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= | ||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= | ||||
| go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
|   | ||||
| @@ -102,8 +102,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/metric v0.31.0 // indirect | ||||
| 	go.opentelemetry.io/otel/sdk v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	go.uber.org/zap v1.19.0 // indirect | ||||
| 	golang.org/x/crypto v0.6.0 // indirect | ||||
| 	golang.org/x/mod v0.10.0 // indirect | ||||
|   | ||||
| @@ -395,13 +395,15 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
|   | ||||
| @@ -112,8 +112,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/metric v0.31.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect | ||||
| 	golang.org/x/term v0.7.0 // indirect | ||||
| 	golang.org/x/text v0.9.0 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -433,13 +433,15 @@ go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqe | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
|   | ||||
| @@ -82,8 +82,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/sdk v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/trace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	go.uber.org/zap v1.19.0 // indirect | ||||
| 	golang.org/x/crypto v0.6.0 // indirect | ||||
| 	golang.org/x/net v0.9.0 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -376,12 +376,14 @@ go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/A | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
| golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
|   | ||||
| @@ -62,9 +62,9 @@ require ( | ||||
| 	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/metric v0.31.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/goleak v1.2.1 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	golang.org/x/net v0.9.0 // indirect | ||||
| 	golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b // indirect | ||||
| 	golang.org/x/term v0.7.0 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -327,13 +327,15 @@ go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/A | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
| golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
|   | ||||
| @@ -78,8 +78,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/sdk v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/trace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	go.uber.org/zap v1.19.0 // indirect | ||||
| 	golang.org/x/crypto v0.6.0 // indirect | ||||
| 	golang.org/x/net v0.9.0 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/controller-manager/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -370,12 +370,14 @@ go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/A | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
| golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
|   | ||||
| @@ -82,8 +82,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/sdk v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/trace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	go.uber.org/zap v1.19.0 // indirect | ||||
| 	golang.org/x/crypto v0.6.0 // indirect | ||||
| 	golang.org/x/mod v0.10.0 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -374,12 +374,14 @@ go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/A | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
| golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
|   | ||||
| @@ -79,8 +79,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/sdk v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/trace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	go.uber.org/zap v1.19.0 // indirect | ||||
| 	golang.org/x/crypto v0.6.0 // indirect | ||||
| 	golang.org/x/net v0.9.0 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/pod-security-admission/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -371,12 +371,14 @@ go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/A | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
| golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
|   | ||||
| @@ -76,8 +76,8 @@ require ( | ||||
| 	go.opentelemetry.io/otel/sdk v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/otel/trace v1.10.0 // indirect | ||||
| 	go.opentelemetry.io/proto/otlp v0.19.0 // indirect | ||||
| 	go.uber.org/atomic v1.7.0 // indirect | ||||
| 	go.uber.org/multierr v1.6.0 // indirect | ||||
| 	go.uber.org/atomic v1.10.0 // indirect | ||||
| 	go.uber.org/multierr v1.11.0 // indirect | ||||
| 	go.uber.org/zap v1.19.0 // indirect | ||||
| 	golang.org/x/crypto v0.6.0 // indirect | ||||
| 	golang.org/x/mod v0.10.0 // indirect | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -371,12 +371,14 @@ go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/A | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= | ||||
| go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= | ||||
| go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= | ||||
| go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= | ||||
| go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= | ||||
| go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= | ||||
| go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= | ||||
| golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.uber.org/atomic/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.uber.org/atomic/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -10,3 +10,6 @@ lint.log | ||||
|  | ||||
| # Profiling output | ||||
| *.prof | ||||
|  | ||||
| # Output of fossa analyzer | ||||
| /fossa | ||||
|   | ||||
							
								
								
									
										27
									
								
								vendor/go.uber.org/atomic/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/go.uber.org/atomic/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,27 +0,0 @@ | ||||
| sudo: false | ||||
| language: go | ||||
| go_import_path: go.uber.org/atomic | ||||
|  | ||||
| env: | ||||
|   global: | ||||
|     - GO111MODULE=on | ||||
|  | ||||
| matrix: | ||||
|   include: | ||||
|   - go: oldstable | ||||
|   - go: stable | ||||
|     env: LINT=1 | ||||
|  | ||||
| cache: | ||||
|   directories: | ||||
|     - vendor | ||||
|  | ||||
| before_install: | ||||
|   - go version | ||||
|  | ||||
| script: | ||||
|   - test -z "$LINT" || make lint | ||||
|   - make cover | ||||
|  | ||||
| after_success: | ||||
|   - bash <(curl -s https://codecov.io/bash) | ||||
							
								
								
									
										61
									
								
								vendor/go.uber.org/atomic/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								vendor/go.uber.org/atomic/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file. | ||||
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||||
| and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||||
|  | ||||
| ## [1.10.0] - 2022-08-11 | ||||
| ### Added | ||||
| - Add `atomic.Float32` type for atomic operations on `float32`. | ||||
| - Add `CompareAndSwap` and `Swap` methods to `atomic.String`, `atomic.Error`, | ||||
|   and `atomic.Value`. | ||||
| - Add generic `atomic.Pointer[T]` type for atomic operations on pointers of any | ||||
|   type. This is present only for Go 1.18 or higher, and is a drop-in for | ||||
|   replacement for the standard library's `sync/atomic.Pointer` type. | ||||
|  | ||||
| ### Changed | ||||
| - Deprecate `CAS` methods on all types in favor of corresponding | ||||
|   `CompareAndSwap` methods. | ||||
|  | ||||
| Thanks to @eNV25 and @icpd for their contributions to this release. | ||||
|  | ||||
| [1.10.0]: https://github.com/uber-go/atomic/compare/v1.9.0...v1.10.0 | ||||
|  | ||||
| ## [1.9.0] - 2021-07-15 | ||||
| ### Added | ||||
| - Add `Float64.Swap` to match int atomic operations. | ||||
| - Add `atomic.Time` type for atomic operations on `time.Time` values. | ||||
|  | ||||
| [1.9.0]: https://github.com/uber-go/atomic/compare/v1.8.0...v1.9.0 | ||||
|  | ||||
| ## [1.8.0] - 2021-06-09 | ||||
| ### Added | ||||
| - Add `atomic.Uintptr` type for atomic operations on `uintptr` values. | ||||
| - Add `atomic.UnsafePointer` type for atomic operations on `unsafe.Pointer` values. | ||||
|  | ||||
| [1.8.0]: https://github.com/uber-go/atomic/compare/v1.7.0...v1.8.0 | ||||
|  | ||||
| ## [1.7.0] - 2020-09-14 | ||||
| ### Added | ||||
| - Support JSON serialization and deserialization of primitive atomic types. | ||||
| @@ -15,32 +46,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ||||
| ### Removed | ||||
| - Remove dependency on `golang.org/x/{lint, tools}`. | ||||
|  | ||||
| [1.7.0]: https://github.com/uber-go/atomic/compare/v1.6.0...v1.7.0 | ||||
|  | ||||
| ## [1.6.0] - 2020-02-24 | ||||
| ### Changed | ||||
| - Drop library dependency on `golang.org/x/{lint, tools}`. | ||||
|  | ||||
| [1.6.0]: https://github.com/uber-go/atomic/compare/v1.5.1...v1.6.0 | ||||
|  | ||||
| ## [1.5.1] - 2019-11-19 | ||||
| - Fix bug where `Bool.CAS` and `Bool.Toggle` do work correctly together | ||||
|   causing `CAS` to fail even though the old value matches. | ||||
|  | ||||
| [1.5.1]: https://github.com/uber-go/atomic/compare/v1.5.0...v1.5.1 | ||||
|  | ||||
| ## [1.5.0] - 2019-10-29 | ||||
| ### Changed | ||||
| - With Go modules, only the `go.uber.org/atomic` import path is supported now. | ||||
|   If you need to use the old import path, please add a `replace` directive to | ||||
|   your `go.mod`. | ||||
|  | ||||
| [1.5.0]: https://github.com/uber-go/atomic/compare/v1.4.0...v1.5.0 | ||||
|  | ||||
| ## [1.4.0] - 2019-05-01 | ||||
| ### Added | ||||
|  - Add `atomic.Error` type for atomic operations on `error` values. | ||||
|  | ||||
| [1.4.0]: https://github.com/uber-go/atomic/compare/v1.3.2...v1.4.0 | ||||
|  | ||||
| ## [1.3.2] - 2018-05-02 | ||||
| ### Added | ||||
| - Add `atomic.Duration` type for atomic operations on `time.Duration` values. | ||||
|  | ||||
| [1.3.2]: https://github.com/uber-go/atomic/compare/v1.3.1...v1.3.2 | ||||
|  | ||||
| ## [1.3.1] - 2017-11-14 | ||||
| ### Fixed | ||||
| - Revert optimization for `atomic.String.Store("")` which caused data races. | ||||
|  | ||||
| [1.3.1]: https://github.com/uber-go/atomic/compare/v1.3.0...v1.3.1 | ||||
|  | ||||
| ## [1.3.0] - 2017-11-13 | ||||
| ### Added | ||||
| - Add `atomic.Bool.CAS` for compare-and-swap semantics on bools. | ||||
| @@ -48,10 +93,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ||||
| ### Changed | ||||
| - Optimize `atomic.String.Store("")` by avoiding an allocation. | ||||
|  | ||||
| [1.3.0]: https://github.com/uber-go/atomic/compare/v1.2.0...v1.3.0 | ||||
|  | ||||
| ## [1.2.0] - 2017-04-12 | ||||
| ### Added | ||||
| - Shadow `atomic.Value` from `sync/atomic`. | ||||
|  | ||||
| [1.2.0]: https://github.com/uber-go/atomic/compare/v1.1.0...v1.2.0 | ||||
|  | ||||
| ## [1.1.0] - 2017-03-10 | ||||
| ### Added | ||||
| - Add atomic `Float64` type. | ||||
| @@ -59,18 +108,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ||||
| ### Changed | ||||
| - Support new `go.uber.org/atomic` import path. | ||||
|  | ||||
| [1.1.0]: https://github.com/uber-go/atomic/compare/v1.0.0...v1.1.0 | ||||
|  | ||||
| ## [1.0.0] - 2016-07-18 | ||||
|  | ||||
| - Initial release. | ||||
|  | ||||
| [1.7.0]: https://github.com/uber-go/atomic/compare/v1.6.0...v1.7.0 | ||||
| [1.6.0]: https://github.com/uber-go/atomic/compare/v1.5.1...v1.6.0 | ||||
| [1.5.1]: https://github.com/uber-go/atomic/compare/v1.5.0...v1.5.1 | ||||
| [1.5.0]: https://github.com/uber-go/atomic/compare/v1.4.0...v1.5.0 | ||||
| [1.4.0]: https://github.com/uber-go/atomic/compare/v1.3.2...v1.4.0 | ||||
| [1.3.2]: https://github.com/uber-go/atomic/compare/v1.3.1...v1.3.2 | ||||
| [1.3.1]: https://github.com/uber-go/atomic/compare/v1.3.0...v1.3.1 | ||||
| [1.3.0]: https://github.com/uber-go/atomic/compare/v1.2.0...v1.3.0 | ||||
| [1.2.0]: https://github.com/uber-go/atomic/compare/v1.1.0...v1.2.0 | ||||
| [1.1.0]: https://github.com/uber-go/atomic/compare/v1.0.0...v1.1.0 | ||||
| [1.0.0]: https://github.com/uber-go/atomic/releases/tag/v1.0.0 | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/go.uber.org/atomic/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/go.uber.org/atomic/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -69,6 +69,7 @@ generate: $(GEN_ATOMICINT) $(GEN_ATOMICWRAPPER) | ||||
| generatenodirty: | ||||
| 	@[ -z "$$(git status --porcelain)" ] || ( \ | ||||
| 		echo "Working tree is dirty. Commit your changes first."; \ | ||||
| 		git status; \ | ||||
| 		exit 1 ) | ||||
| 	@make generate | ||||
| 	@status=$$(git status --porcelain); \ | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/go.uber.org/atomic/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/go.uber.org/atomic/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -55,8 +55,8 @@ Released under the [MIT License](LICENSE.txt). | ||||
|  | ||||
| [doc-img]: https://godoc.org/github.com/uber-go/atomic?status.svg | ||||
| [doc]: https://godoc.org/go.uber.org/atomic | ||||
| [ci-img]: https://travis-ci.com/uber-go/atomic.svg?branch=master | ||||
| [ci]: https://travis-ci.com/uber-go/atomic | ||||
| [ci-img]: https://github.com/uber-go/atomic/actions/workflows/go.yml/badge.svg | ||||
| [ci]: https://github.com/uber-go/atomic/actions/workflows/go.yml | ||||
| [cov-img]: https://codecov.io/gh/uber-go/atomic/branch/master/graph/badge.svg | ||||
| [cov]: https://codecov.io/gh/uber-go/atomic | ||||
| [reportcard-img]: https://goreportcard.com/badge/go.uber.org/atomic | ||||
|   | ||||
							
								
								
									
										27
									
								
								vendor/go.uber.org/atomic/bool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/go.uber.org/atomic/bool.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicwrapper. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -36,10 +36,10 @@ type Bool struct { | ||||
| var _zeroBool bool | ||||
|  | ||||
| // NewBool creates a new Bool. | ||||
| func NewBool(v bool) *Bool { | ||||
| func NewBool(val bool) *Bool { | ||||
| 	x := &Bool{} | ||||
| 	if v != _zeroBool { | ||||
| 		x.Store(v) | ||||
| 	if val != _zeroBool { | ||||
| 		x.Store(val) | ||||
| 	} | ||||
| 	return x | ||||
| } | ||||
| @@ -50,19 +50,26 @@ func (x *Bool) Load() bool { | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed bool. | ||||
| func (x *Bool) Store(v bool) { | ||||
| 	x.v.Store(boolToInt(v)) | ||||
| func (x *Bool) Store(val bool) { | ||||
| 	x.v.Store(boolToInt(val)) | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap for bool values. | ||||
| func (x *Bool) CAS(o, n bool) bool { | ||||
| 	return x.v.CAS(boolToInt(o), boolToInt(n)) | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap. | ||||
| func (x *Bool) CAS(old, new bool) (swapped bool) { | ||||
| 	return x.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap for bool values. | ||||
| func (x *Bool) CompareAndSwap(old, new bool) (swapped bool) { | ||||
| 	return x.v.CompareAndSwap(boolToInt(old), boolToInt(new)) | ||||
| } | ||||
|  | ||||
| // Swap atomically stores the given bool and returns the old | ||||
| // value. | ||||
| func (x *Bool) Swap(o bool) bool { | ||||
| 	return truthy(x.v.Swap(boolToInt(o))) | ||||
| func (x *Bool) Swap(val bool) (old bool) { | ||||
| 	return truthy(x.v.Swap(boolToInt(val))) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped bool into JSON. | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.uber.org/atomic/bool_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.uber.org/atomic/bool_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -38,7 +38,7 @@ func boolToInt(b bool) uint32 { | ||||
| } | ||||
|  | ||||
| // Toggle atomically negates the Boolean and returns the previous value. | ||||
| func (b *Bool) Toggle() bool { | ||||
| func (b *Bool) Toggle() (old bool) { | ||||
| 	for { | ||||
| 		old := b.Load() | ||||
| 		if b.CAS(old, !old) { | ||||
|   | ||||
							
								
								
									
										27
									
								
								vendor/go.uber.org/atomic/duration.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/go.uber.org/atomic/duration.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicwrapper. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -37,10 +37,10 @@ type Duration struct { | ||||
| var _zeroDuration time.Duration | ||||
|  | ||||
| // NewDuration creates a new Duration. | ||||
| func NewDuration(v time.Duration) *Duration { | ||||
| func NewDuration(val time.Duration) *Duration { | ||||
| 	x := &Duration{} | ||||
| 	if v != _zeroDuration { | ||||
| 		x.Store(v) | ||||
| 	if val != _zeroDuration { | ||||
| 		x.Store(val) | ||||
| 	} | ||||
| 	return x | ||||
| } | ||||
| @@ -51,19 +51,26 @@ func (x *Duration) Load() time.Duration { | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed time.Duration. | ||||
| func (x *Duration) Store(v time.Duration) { | ||||
| 	x.v.Store(int64(v)) | ||||
| func (x *Duration) Store(val time.Duration) { | ||||
| 	x.v.Store(int64(val)) | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap for time.Duration values. | ||||
| func (x *Duration) CAS(o, n time.Duration) bool { | ||||
| 	return x.v.CAS(int64(o), int64(n)) | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap. | ||||
| func (x *Duration) CAS(old, new time.Duration) (swapped bool) { | ||||
| 	return x.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap for time.Duration values. | ||||
| func (x *Duration) CompareAndSwap(old, new time.Duration) (swapped bool) { | ||||
| 	return x.v.CompareAndSwap(int64(old), int64(new)) | ||||
| } | ||||
|  | ||||
| // Swap atomically stores the given time.Duration and returns the old | ||||
| // value. | ||||
| func (x *Duration) Swap(o time.Duration) time.Duration { | ||||
| 	return time.Duration(x.v.Swap(int64(o))) | ||||
| func (x *Duration) Swap(val time.Duration) (old time.Duration) { | ||||
| 	return time.Duration(x.v.Swap(int64(val))) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped time.Duration into JSON. | ||||
|   | ||||
							
								
								
									
										8
									
								
								vendor/go.uber.org/atomic/duration_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/go.uber.org/atomic/duration_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -25,13 +25,13 @@ import "time" | ||||
| //go:generate bin/gen-atomicwrapper -name=Duration -type=time.Duration -wrapped=Int64 -pack=int64 -unpack=time.Duration -cas -swap -json -imports time -file=duration.go | ||||
|  | ||||
| // Add atomically adds to the wrapped time.Duration and returns the new value. | ||||
| func (d *Duration) Add(n time.Duration) time.Duration { | ||||
| 	return time.Duration(d.v.Add(int64(n))) | ||||
| func (d *Duration) Add(delta time.Duration) time.Duration { | ||||
| 	return time.Duration(d.v.Add(int64(delta))) | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped time.Duration and returns the new value. | ||||
| func (d *Duration) Sub(n time.Duration) time.Duration { | ||||
| 	return time.Duration(d.v.Sub(int64(n))) | ||||
| func (d *Duration) Sub(delta time.Duration) time.Duration { | ||||
| 	return time.Duration(d.v.Sub(int64(delta))) | ||||
| } | ||||
|  | ||||
| // String encodes the wrapped value as a string. | ||||
|   | ||||
							
								
								
									
										23
									
								
								vendor/go.uber.org/atomic/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/go.uber.org/atomic/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicwrapper. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -32,10 +32,10 @@ type Error struct { | ||||
| var _zeroError error | ||||
|  | ||||
| // NewError creates a new Error. | ||||
| func NewError(v error) *Error { | ||||
| func NewError(val error) *Error { | ||||
| 	x := &Error{} | ||||
| 	if v != _zeroError { | ||||
| 		x.Store(v) | ||||
| 	if val != _zeroError { | ||||
| 		x.Store(val) | ||||
| 	} | ||||
| 	return x | ||||
| } | ||||
| @@ -46,6 +46,17 @@ func (x *Error) Load() error { | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed error. | ||||
| func (x *Error) Store(v error) { | ||||
| 	x.v.Store(packError(v)) | ||||
| func (x *Error) Store(val error) { | ||||
| 	x.v.Store(packError(val)) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap for error values. | ||||
| func (x *Error) CompareAndSwap(old, new error) (swapped bool) { | ||||
| 	return x.v.CompareAndSwap(packError(old), packError(new)) | ||||
| } | ||||
|  | ||||
| // Swap atomically stores the given error and returns the old | ||||
| // value. | ||||
| func (x *Error) Swap(val error) (old error) { | ||||
| 	return unpackError(x.v.Swap(packError(val))) | ||||
| } | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/go.uber.org/atomic/error_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/go.uber.org/atomic/error_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -23,7 +23,7 @@ package atomic | ||||
| // atomic.Value panics on nil inputs, or if the underlying type changes. | ||||
| // Stabilize by always storing a custom struct that we control. | ||||
|  | ||||
| //go:generate bin/gen-atomicwrapper -name=Error -type=error -wrapped=Value -pack=packError -unpack=unpackError -file=error.go | ||||
| //go:generate bin/gen-atomicwrapper -name=Error -type=error -wrapped=Value -pack=packError -unpack=unpackError -compareandswap -swap -file=error.go | ||||
|  | ||||
| type packedError struct{ Value error } | ||||
|  | ||||
|   | ||||
							
								
								
									
										77
									
								
								vendor/go.uber.org/atomic/float32.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								vendor/go.uber.org/atomic/float32.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| // @generated Code generated by gen-atomicwrapper. | ||||
|  | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"math" | ||||
| ) | ||||
|  | ||||
| // Float32 is an atomic type-safe wrapper for float32 values. | ||||
| type Float32 struct { | ||||
| 	_ nocmp // disallow non-atomic comparison | ||||
|  | ||||
| 	v Uint32 | ||||
| } | ||||
|  | ||||
| var _zeroFloat32 float32 | ||||
|  | ||||
| // NewFloat32 creates a new Float32. | ||||
| func NewFloat32(val float32) *Float32 { | ||||
| 	x := &Float32{} | ||||
| 	if val != _zeroFloat32 { | ||||
| 		x.Store(val) | ||||
| 	} | ||||
| 	return x | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped float32. | ||||
| func (x *Float32) Load() float32 { | ||||
| 	return math.Float32frombits(x.v.Load()) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed float32. | ||||
| func (x *Float32) Store(val float32) { | ||||
| 	x.v.Store(math.Float32bits(val)) | ||||
| } | ||||
|  | ||||
| // Swap atomically stores the given float32 and returns the old | ||||
| // value. | ||||
| func (x *Float32) Swap(val float32) (old float32) { | ||||
| 	return math.Float32frombits(x.v.Swap(math.Float32bits(val))) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped float32 into JSON. | ||||
| func (x *Float32) MarshalJSON() ([]byte, error) { | ||||
| 	return json.Marshal(x.Load()) | ||||
| } | ||||
|  | ||||
| // UnmarshalJSON decodes a float32 from JSON. | ||||
| func (x *Float32) UnmarshalJSON(b []byte) error { | ||||
| 	var v float32 | ||||
| 	if err := json.Unmarshal(b, &v); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	x.Store(v) | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										76
									
								
								vendor/go.uber.org/atomic/float32_ext.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								vendor/go.uber.org/atomic/float32_ext.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import ( | ||||
| 	"math" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | ||||
| //go:generate bin/gen-atomicwrapper -name=Float32 -type=float32 -wrapped=Uint32 -pack=math.Float32bits -unpack=math.Float32frombits -swap -json -imports math -file=float32.go | ||||
|  | ||||
| // Add atomically adds to the wrapped float32 and returns the new value. | ||||
| func (f *Float32) Add(delta float32) float32 { | ||||
| 	for { | ||||
| 		old := f.Load() | ||||
| 		new := old + delta | ||||
| 		if f.CAS(old, new) { | ||||
| 			return new | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped float32 and returns the new value. | ||||
| func (f *Float32) Sub(delta float32) float32 { | ||||
| 	return f.Add(-delta) | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap for float32 values. | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap | ||||
| func (f *Float32) CAS(old, new float32) (swapped bool) { | ||||
| 	return f.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap for float32 values. | ||||
| // | ||||
| // Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators | ||||
| // but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN. | ||||
| // This avoids typical CompareAndSwap loops from blocking forever, e.g., | ||||
| // | ||||
| //	for { | ||||
| //	  old := atom.Load() | ||||
| //	  new = f(old) | ||||
| //	  if atom.CompareAndSwap(old, new) { | ||||
| //	    break | ||||
| //	  } | ||||
| //	} | ||||
| // | ||||
| // If CompareAndSwap did not match NaN to match, then the above would loop forever. | ||||
| func (f *Float32) CompareAndSwap(old, new float32) (swapped bool) { | ||||
| 	return f.v.CompareAndSwap(math.Float32bits(old), math.Float32bits(new)) | ||||
| } | ||||
|  | ||||
| // String encodes the wrapped value as a string. | ||||
| func (f *Float32) String() string { | ||||
| 	// 'g' is the behavior for floats with %v. | ||||
| 	return strconv.FormatFloat(float64(f.Load()), 'g', -1, 32) | ||||
| } | ||||
							
								
								
									
										19
									
								
								vendor/go.uber.org/atomic/float64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/go.uber.org/atomic/float64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicwrapper. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -37,10 +37,10 @@ type Float64 struct { | ||||
| var _zeroFloat64 float64 | ||||
|  | ||||
| // NewFloat64 creates a new Float64. | ||||
| func NewFloat64(v float64) *Float64 { | ||||
| func NewFloat64(val float64) *Float64 { | ||||
| 	x := &Float64{} | ||||
| 	if v != _zeroFloat64 { | ||||
| 		x.Store(v) | ||||
| 	if val != _zeroFloat64 { | ||||
| 		x.Store(val) | ||||
| 	} | ||||
| 	return x | ||||
| } | ||||
| @@ -51,13 +51,14 @@ func (x *Float64) Load() float64 { | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed float64. | ||||
| func (x *Float64) Store(v float64) { | ||||
| 	x.v.Store(math.Float64bits(v)) | ||||
| func (x *Float64) Store(val float64) { | ||||
| 	x.v.Store(math.Float64bits(val)) | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap for float64 values. | ||||
| func (x *Float64) CAS(o, n float64) bool { | ||||
| 	return x.v.CAS(math.Float64bits(o), math.Float64bits(n)) | ||||
| // Swap atomically stores the given float64 and returns the old | ||||
| // value. | ||||
| func (x *Float64) Swap(val float64) (old float64) { | ||||
| 	return math.Float64frombits(x.v.Swap(math.Float64bits(val))) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped float64 into JSON. | ||||
|   | ||||
							
								
								
									
										43
									
								
								vendor/go.uber.org/atomic/float64_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								vendor/go.uber.org/atomic/float64_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -20,15 +20,18 @@ | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import "strconv" | ||||
| import ( | ||||
| 	"math" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | ||||
| //go:generate bin/gen-atomicwrapper -name=Float64 -type=float64 -wrapped=Uint64 -pack=math.Float64bits -unpack=math.Float64frombits -cas -json -imports math -file=float64.go | ||||
| //go:generate bin/gen-atomicwrapper -name=Float64 -type=float64 -wrapped=Uint64 -pack=math.Float64bits -unpack=math.Float64frombits -swap -json -imports math -file=float64.go | ||||
|  | ||||
| // Add atomically adds to the wrapped float64 and returns the new value. | ||||
| func (f *Float64) Add(s float64) float64 { | ||||
| func (f *Float64) Add(delta float64) float64 { | ||||
| 	for { | ||||
| 		old := f.Load() | ||||
| 		new := old + s | ||||
| 		new := old + delta | ||||
| 		if f.CAS(old, new) { | ||||
| 			return new | ||||
| 		} | ||||
| @@ -36,8 +39,34 @@ func (f *Float64) Add(s float64) float64 { | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped float64 and returns the new value. | ||||
| func (f *Float64) Sub(s float64) float64 { | ||||
| 	return f.Add(-s) | ||||
| func (f *Float64) Sub(delta float64) float64 { | ||||
| 	return f.Add(-delta) | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap for float64 values. | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap | ||||
| func (f *Float64) CAS(old, new float64) (swapped bool) { | ||||
| 	return f.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap for float64 values. | ||||
| // | ||||
| // Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators | ||||
| // but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN. | ||||
| // This avoids typical CompareAndSwap loops from blocking forever, e.g., | ||||
| // | ||||
| //	for { | ||||
| //	  old := atom.Load() | ||||
| //	  new = f(old) | ||||
| //	  if atom.CompareAndSwap(old, new) { | ||||
| //	    break | ||||
| //	  } | ||||
| //	} | ||||
| // | ||||
| // If CompareAndSwap did not match NaN to match, then the above would loop forever. | ||||
| func (f *Float64) CompareAndSwap(old, new float64) (swapped bool) { | ||||
| 	return f.v.CompareAndSwap(math.Float64bits(old), math.Float64bits(new)) | ||||
| } | ||||
|  | ||||
| // String encodes the wrapped value as a string. | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/go.uber.org/atomic/gen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/go.uber.org/atomic/gen.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -24,3 +24,4 @@ package atomic | ||||
| //go:generate bin/gen-atomicint -name=Int64 -wrapped=int64 -file=int64.go | ||||
| //go:generate bin/gen-atomicint -name=Uint32 -wrapped=uint32 -unsigned -file=uint32.go | ||||
| //go:generate bin/gen-atomicint -name=Uint64 -wrapped=uint64 -unsigned -file=uint64.go | ||||
| //go:generate bin/gen-atomicint -name=Uintptr -wrapped=uintptr -unsigned -file=uintptr.go | ||||
|   | ||||
							
								
								
									
										31
									
								
								vendor/go.uber.org/atomic/int32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/go.uber.org/atomic/int32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicint. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -36,8 +36,8 @@ type Int32 struct { | ||||
| } | ||||
|  | ||||
| // NewInt32 creates a new Int32. | ||||
| func NewInt32(i int32) *Int32 { | ||||
| 	return &Int32{v: i} | ||||
| func NewInt32(val int32) *Int32 { | ||||
| 	return &Int32{v: val} | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| @@ -46,13 +46,13 @@ func (i *Int32) Load() int32 { | ||||
| } | ||||
|  | ||||
| // Add atomically adds to the wrapped int32 and returns the new value. | ||||
| func (i *Int32) Add(n int32) int32 { | ||||
| 	return atomic.AddInt32(&i.v, n) | ||||
| func (i *Int32) Add(delta int32) int32 { | ||||
| 	return atomic.AddInt32(&i.v, delta) | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped int32 and returns the new value. | ||||
| func (i *Int32) Sub(n int32) int32 { | ||||
| 	return atomic.AddInt32(&i.v, -n) | ||||
| func (i *Int32) Sub(delta int32) int32 { | ||||
| 	return atomic.AddInt32(&i.v, -delta) | ||||
| } | ||||
|  | ||||
| // Inc atomically increments the wrapped int32 and returns the new value. | ||||
| @@ -66,18 +66,25 @@ func (i *Int32) Dec() int32 { | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap. | ||||
| func (i *Int32) CAS(old, new int32) bool { | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap. | ||||
| func (i *Int32) CAS(old, new int32) (swapped bool) { | ||||
| 	return i.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (i *Int32) CompareAndSwap(old, new int32) (swapped bool) { | ||||
| 	return atomic.CompareAndSwapInt32(&i.v, old, new) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (i *Int32) Store(n int32) { | ||||
| 	atomic.StoreInt32(&i.v, n) | ||||
| func (i *Int32) Store(val int32) { | ||||
| 	atomic.StoreInt32(&i.v, val) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped int32 and returns the old value. | ||||
| func (i *Int32) Swap(n int32) int32 { | ||||
| 	return atomic.SwapInt32(&i.v, n) | ||||
| func (i *Int32) Swap(val int32) (old int32) { | ||||
| 	return atomic.SwapInt32(&i.v, val) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped int32 into JSON. | ||||
|   | ||||
							
								
								
									
										31
									
								
								vendor/go.uber.org/atomic/int64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/go.uber.org/atomic/int64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicint. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -36,8 +36,8 @@ type Int64 struct { | ||||
| } | ||||
|  | ||||
| // NewInt64 creates a new Int64. | ||||
| func NewInt64(i int64) *Int64 { | ||||
| 	return &Int64{v: i} | ||||
| func NewInt64(val int64) *Int64 { | ||||
| 	return &Int64{v: val} | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| @@ -46,13 +46,13 @@ func (i *Int64) Load() int64 { | ||||
| } | ||||
|  | ||||
| // Add atomically adds to the wrapped int64 and returns the new value. | ||||
| func (i *Int64) Add(n int64) int64 { | ||||
| 	return atomic.AddInt64(&i.v, n) | ||||
| func (i *Int64) Add(delta int64) int64 { | ||||
| 	return atomic.AddInt64(&i.v, delta) | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped int64 and returns the new value. | ||||
| func (i *Int64) Sub(n int64) int64 { | ||||
| 	return atomic.AddInt64(&i.v, -n) | ||||
| func (i *Int64) Sub(delta int64) int64 { | ||||
| 	return atomic.AddInt64(&i.v, -delta) | ||||
| } | ||||
|  | ||||
| // Inc atomically increments the wrapped int64 and returns the new value. | ||||
| @@ -66,18 +66,25 @@ func (i *Int64) Dec() int64 { | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap. | ||||
| func (i *Int64) CAS(old, new int64) bool { | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap. | ||||
| func (i *Int64) CAS(old, new int64) (swapped bool) { | ||||
| 	return i.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (i *Int64) CompareAndSwap(old, new int64) (swapped bool) { | ||||
| 	return atomic.CompareAndSwapInt64(&i.v, old, new) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (i *Int64) Store(n int64) { | ||||
| 	atomic.StoreInt64(&i.v, n) | ||||
| func (i *Int64) Store(val int64) { | ||||
| 	atomic.StoreInt64(&i.v, val) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped int64 and returns the old value. | ||||
| func (i *Int64) Swap(n int64) int64 { | ||||
| 	return atomic.SwapInt64(&i.v, n) | ||||
| func (i *Int64) Swap(val int64) (old int64) { | ||||
| 	return atomic.SwapInt64(&i.v, val) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped int64 into JSON. | ||||
|   | ||||
							
								
								
									
										12
									
								
								vendor/go.uber.org/atomic/nocmp.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/go.uber.org/atomic/nocmp.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -23,13 +23,13 @@ package atomic | ||||
| // nocmp is an uncomparable struct. Embed this inside another struct to make | ||||
| // it uncomparable. | ||||
| // | ||||
| //  type Foo struct { | ||||
| //    nocmp | ||||
| //    // ... | ||||
| //  } | ||||
| //	type Foo struct { | ||||
| //	  nocmp | ||||
| //	  // ... | ||||
| //	} | ||||
| // | ||||
| // This DOES NOT: | ||||
| // | ||||
| //  - Disallow shallow copies of structs | ||||
| //  - Disallow comparison of pointers to uncomparable structs | ||||
| //   - Disallow shallow copies of structs | ||||
| //   - Disallow comparison of pointers to uncomparable structs | ||||
| type nocmp [0]func() | ||||
|   | ||||
							
								
								
									
										60
									
								
								vendor/go.uber.org/atomic/pointer_go118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								vendor/go.uber.org/atomic/pointer_go118.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| // Copyright (c) 2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| //go:build go1.18 && !go1.19 | ||||
| // +build go1.18,!go1.19 | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import "unsafe" | ||||
|  | ||||
| type Pointer[T any] struct { | ||||
| 	_ nocmp // disallow non-atomic comparison | ||||
| 	p UnsafePointer | ||||
| } | ||||
|  | ||||
| // NewPointer creates a new Pointer. | ||||
| func NewPointer[T any](v *T) *Pointer[T] { | ||||
| 	var p Pointer[T] | ||||
| 	if v != nil { | ||||
| 		p.p.Store(unsafe.Pointer(v)) | ||||
| 	} | ||||
| 	return &p | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| func (p *Pointer[T]) Load() *T { | ||||
| 	return (*T)(p.p.Load()) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (p *Pointer[T]) Store(val *T) { | ||||
| 	p.p.Store(unsafe.Pointer(val)) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped pointer and returns the old value. | ||||
| func (p *Pointer[T]) Swap(val *T) (old *T) { | ||||
| 	return (*T)(p.p.Swap(unsafe.Pointer(val))) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) { | ||||
| 	return p.p.CompareAndSwap(unsafe.Pointer(old), unsafe.Pointer(new)) | ||||
| } | ||||
							
								
								
									
										61
									
								
								vendor/go.uber.org/atomic/pointer_go119.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								vendor/go.uber.org/atomic/pointer_go119.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| // Copyright (c) 2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| //go:build go1.19 | ||||
| // +build go1.19 | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import "sync/atomic" | ||||
|  | ||||
| // Pointer is an atomic pointer of type *T. | ||||
| type Pointer[T any] struct { | ||||
| 	_ nocmp // disallow non-atomic comparison | ||||
| 	p atomic.Pointer[T] | ||||
| } | ||||
|  | ||||
| // NewPointer creates a new Pointer. | ||||
| func NewPointer[T any](v *T) *Pointer[T] { | ||||
| 	var p Pointer[T] | ||||
| 	if v != nil { | ||||
| 		p.p.Store(v) | ||||
| 	} | ||||
| 	return &p | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| func (p *Pointer[T]) Load() *T { | ||||
| 	return p.p.Load() | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (p *Pointer[T]) Store(val *T) { | ||||
| 	p.p.Store(val) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped pointer and returns the old value. | ||||
| func (p *Pointer[T]) Swap(val *T) (old *T) { | ||||
| 	return p.p.Swap(val) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool) { | ||||
| 	return p.p.CompareAndSwap(old, new) | ||||
| } | ||||
							
								
								
									
										23
									
								
								vendor/go.uber.org/atomic/string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/go.uber.org/atomic/string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicwrapper. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -32,10 +32,10 @@ type String struct { | ||||
| var _zeroString string | ||||
|  | ||||
| // NewString creates a new String. | ||||
| func NewString(v string) *String { | ||||
| func NewString(val string) *String { | ||||
| 	x := &String{} | ||||
| 	if v != _zeroString { | ||||
| 		x.Store(v) | ||||
| 	if val != _zeroString { | ||||
| 		x.Store(val) | ||||
| 	} | ||||
| 	return x | ||||
| } | ||||
| @@ -49,6 +49,17 @@ func (x *String) Load() string { | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed string. | ||||
| func (x *String) Store(v string) { | ||||
| 	x.v.Store(v) | ||||
| func (x *String) Store(val string) { | ||||
| 	x.v.Store(val) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap for string values. | ||||
| func (x *String) CompareAndSwap(old, new string) (swapped bool) { | ||||
| 	return x.v.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // Swap atomically stores the given string and returns the old | ||||
| // value. | ||||
| func (x *String) Swap(val string) (old string) { | ||||
| 	return x.v.Swap(val).(string) | ||||
| } | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/go.uber.org/atomic/string_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/go.uber.org/atomic/string_ext.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -20,7 +20,7 @@ | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| //go:generate bin/gen-atomicwrapper -name=String -type=string -wrapped=Value -file=string.go | ||||
| //go:generate bin/gen-atomicwrapper -name=String -type=string -wrapped=Value -compareandswap -swap -file=string.go | ||||
|  | ||||
| // String returns the wrapped value. | ||||
| func (s *String) String() string { | ||||
|   | ||||
							
								
								
									
										55
									
								
								vendor/go.uber.org/atomic/time.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								vendor/go.uber.org/atomic/time.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | ||||
| // @generated Code generated by gen-atomicwrapper. | ||||
|  | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
| ) | ||||
|  | ||||
| // Time is an atomic type-safe wrapper for time.Time values. | ||||
| type Time struct { | ||||
| 	_ nocmp // disallow non-atomic comparison | ||||
|  | ||||
| 	v Value | ||||
| } | ||||
|  | ||||
| var _zeroTime time.Time | ||||
|  | ||||
| // NewTime creates a new Time. | ||||
| func NewTime(val time.Time) *Time { | ||||
| 	x := &Time{} | ||||
| 	if val != _zeroTime { | ||||
| 		x.Store(val) | ||||
| 	} | ||||
| 	return x | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped time.Time. | ||||
| func (x *Time) Load() time.Time { | ||||
| 	return unpackTime(x.v.Load()) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed time.Time. | ||||
| func (x *Time) Store(val time.Time) { | ||||
| 	x.v.Store(packTime(val)) | ||||
| } | ||||
							
								
								
									
										36
									
								
								vendor/go.uber.org/atomic/time_ext.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								vendor/go.uber.org/atomic/time_ext.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| //  Copyright (c) 2021 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import "time" | ||||
|  | ||||
| //go:generate bin/gen-atomicwrapper -name=Time -type=time.Time -wrapped=Value -pack=packTime -unpack=unpackTime -imports time -file=time.go | ||||
|  | ||||
| func packTime(t time.Time) interface{} { | ||||
| 	return t | ||||
| } | ||||
|  | ||||
| func unpackTime(v interface{}) time.Time { | ||||
| 	if t, ok := v.(time.Time); ok { | ||||
| 		return t | ||||
| 	} | ||||
| 	return time.Time{} | ||||
| } | ||||
							
								
								
									
										31
									
								
								vendor/go.uber.org/atomic/uint32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/go.uber.org/atomic/uint32.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicint. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -36,8 +36,8 @@ type Uint32 struct { | ||||
| } | ||||
|  | ||||
| // NewUint32 creates a new Uint32. | ||||
| func NewUint32(i uint32) *Uint32 { | ||||
| 	return &Uint32{v: i} | ||||
| func NewUint32(val uint32) *Uint32 { | ||||
| 	return &Uint32{v: val} | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| @@ -46,13 +46,13 @@ func (i *Uint32) Load() uint32 { | ||||
| } | ||||
|  | ||||
| // Add atomically adds to the wrapped uint32 and returns the new value. | ||||
| func (i *Uint32) Add(n uint32) uint32 { | ||||
| 	return atomic.AddUint32(&i.v, n) | ||||
| func (i *Uint32) Add(delta uint32) uint32 { | ||||
| 	return atomic.AddUint32(&i.v, delta) | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped uint32 and returns the new value. | ||||
| func (i *Uint32) Sub(n uint32) uint32 { | ||||
| 	return atomic.AddUint32(&i.v, ^(n - 1)) | ||||
| func (i *Uint32) Sub(delta uint32) uint32 { | ||||
| 	return atomic.AddUint32(&i.v, ^(delta - 1)) | ||||
| } | ||||
|  | ||||
| // Inc atomically increments the wrapped uint32 and returns the new value. | ||||
| @@ -66,18 +66,25 @@ func (i *Uint32) Dec() uint32 { | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap. | ||||
| func (i *Uint32) CAS(old, new uint32) bool { | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap. | ||||
| func (i *Uint32) CAS(old, new uint32) (swapped bool) { | ||||
| 	return i.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (i *Uint32) CompareAndSwap(old, new uint32) (swapped bool) { | ||||
| 	return atomic.CompareAndSwapUint32(&i.v, old, new) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (i *Uint32) Store(n uint32) { | ||||
| 	atomic.StoreUint32(&i.v, n) | ||||
| func (i *Uint32) Store(val uint32) { | ||||
| 	atomic.StoreUint32(&i.v, val) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped uint32 and returns the old value. | ||||
| func (i *Uint32) Swap(n uint32) uint32 { | ||||
| 	return atomic.SwapUint32(&i.v, n) | ||||
| func (i *Uint32) Swap(val uint32) (old uint32) { | ||||
| 	return atomic.SwapUint32(&i.v, val) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped uint32 into JSON. | ||||
|   | ||||
							
								
								
									
										31
									
								
								vendor/go.uber.org/atomic/uint64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/go.uber.org/atomic/uint64.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // @generated Code generated by gen-atomicint. | ||||
|  | ||||
| // Copyright (c) 2020 Uber Technologies, Inc. | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -36,8 +36,8 @@ type Uint64 struct { | ||||
| } | ||||
|  | ||||
| // NewUint64 creates a new Uint64. | ||||
| func NewUint64(i uint64) *Uint64 { | ||||
| 	return &Uint64{v: i} | ||||
| func NewUint64(val uint64) *Uint64 { | ||||
| 	return &Uint64{v: val} | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| @@ -46,13 +46,13 @@ func (i *Uint64) Load() uint64 { | ||||
| } | ||||
|  | ||||
| // Add atomically adds to the wrapped uint64 and returns the new value. | ||||
| func (i *Uint64) Add(n uint64) uint64 { | ||||
| 	return atomic.AddUint64(&i.v, n) | ||||
| func (i *Uint64) Add(delta uint64) uint64 { | ||||
| 	return atomic.AddUint64(&i.v, delta) | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped uint64 and returns the new value. | ||||
| func (i *Uint64) Sub(n uint64) uint64 { | ||||
| 	return atomic.AddUint64(&i.v, ^(n - 1)) | ||||
| func (i *Uint64) Sub(delta uint64) uint64 { | ||||
| 	return atomic.AddUint64(&i.v, ^(delta - 1)) | ||||
| } | ||||
|  | ||||
| // Inc atomically increments the wrapped uint64 and returns the new value. | ||||
| @@ -66,18 +66,25 @@ func (i *Uint64) Dec() uint64 { | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap. | ||||
| func (i *Uint64) CAS(old, new uint64) bool { | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap. | ||||
| func (i *Uint64) CAS(old, new uint64) (swapped bool) { | ||||
| 	return i.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (i *Uint64) CompareAndSwap(old, new uint64) (swapped bool) { | ||||
| 	return atomic.CompareAndSwapUint64(&i.v, old, new) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (i *Uint64) Store(n uint64) { | ||||
| 	atomic.StoreUint64(&i.v, n) | ||||
| func (i *Uint64) Store(val uint64) { | ||||
| 	atomic.StoreUint64(&i.v, val) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped uint64 and returns the old value. | ||||
| func (i *Uint64) Swap(n uint64) uint64 { | ||||
| 	return atomic.SwapUint64(&i.v, n) | ||||
| func (i *Uint64) Swap(val uint64) (old uint64) { | ||||
| 	return atomic.SwapUint64(&i.v, val) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped uint64 into JSON. | ||||
|   | ||||
							
								
								
									
										109
									
								
								vendor/go.uber.org/atomic/uintptr.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								vendor/go.uber.org/atomic/uintptr.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,109 @@ | ||||
| // @generated Code generated by gen-atomicint. | ||||
|  | ||||
| // Copyright (c) 2020-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"strconv" | ||||
| 	"sync/atomic" | ||||
| ) | ||||
|  | ||||
| // Uintptr is an atomic wrapper around uintptr. | ||||
| type Uintptr struct { | ||||
| 	_ nocmp // disallow non-atomic comparison | ||||
|  | ||||
| 	v uintptr | ||||
| } | ||||
|  | ||||
| // NewUintptr creates a new Uintptr. | ||||
| func NewUintptr(val uintptr) *Uintptr { | ||||
| 	return &Uintptr{v: val} | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| func (i *Uintptr) Load() uintptr { | ||||
| 	return atomic.LoadUintptr(&i.v) | ||||
| } | ||||
|  | ||||
| // Add atomically adds to the wrapped uintptr and returns the new value. | ||||
| func (i *Uintptr) Add(delta uintptr) uintptr { | ||||
| 	return atomic.AddUintptr(&i.v, delta) | ||||
| } | ||||
|  | ||||
| // Sub atomically subtracts from the wrapped uintptr and returns the new value. | ||||
| func (i *Uintptr) Sub(delta uintptr) uintptr { | ||||
| 	return atomic.AddUintptr(&i.v, ^(delta - 1)) | ||||
| } | ||||
|  | ||||
| // Inc atomically increments the wrapped uintptr and returns the new value. | ||||
| func (i *Uintptr) Inc() uintptr { | ||||
| 	return i.Add(1) | ||||
| } | ||||
|  | ||||
| // Dec atomically decrements the wrapped uintptr and returns the new value. | ||||
| func (i *Uintptr) Dec() uintptr { | ||||
| 	return i.Sub(1) | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap. | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap. | ||||
| func (i *Uintptr) CAS(old, new uintptr) (swapped bool) { | ||||
| 	return i.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (i *Uintptr) CompareAndSwap(old, new uintptr) (swapped bool) { | ||||
| 	return atomic.CompareAndSwapUintptr(&i.v, old, new) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (i *Uintptr) Store(val uintptr) { | ||||
| 	atomic.StoreUintptr(&i.v, val) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped uintptr and returns the old value. | ||||
| func (i *Uintptr) Swap(val uintptr) (old uintptr) { | ||||
| 	return atomic.SwapUintptr(&i.v, val) | ||||
| } | ||||
|  | ||||
| // MarshalJSON encodes the wrapped uintptr into JSON. | ||||
| func (i *Uintptr) MarshalJSON() ([]byte, error) { | ||||
| 	return json.Marshal(i.Load()) | ||||
| } | ||||
|  | ||||
| // UnmarshalJSON decodes JSON into the wrapped uintptr. | ||||
| func (i *Uintptr) UnmarshalJSON(b []byte) error { | ||||
| 	var v uintptr | ||||
| 	if err := json.Unmarshal(b, &v); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	i.Store(v) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // String encodes the wrapped value as a string. | ||||
| func (i *Uintptr) String() string { | ||||
| 	v := i.Load() | ||||
| 	return strconv.FormatUint(uint64(v), 10) | ||||
| } | ||||
							
								
								
									
										65
									
								
								vendor/go.uber.org/atomic/unsafe_pointer.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								vendor/go.uber.org/atomic/unsafe_pointer.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| // Copyright (c) 2021-2022 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| package atomic | ||||
|  | ||||
| import ( | ||||
| 	"sync/atomic" | ||||
| 	"unsafe" | ||||
| ) | ||||
|  | ||||
| // UnsafePointer is an atomic wrapper around unsafe.Pointer. | ||||
| type UnsafePointer struct { | ||||
| 	_ nocmp // disallow non-atomic comparison | ||||
|  | ||||
| 	v unsafe.Pointer | ||||
| } | ||||
|  | ||||
| // NewUnsafePointer creates a new UnsafePointer. | ||||
| func NewUnsafePointer(val unsafe.Pointer) *UnsafePointer { | ||||
| 	return &UnsafePointer{v: val} | ||||
| } | ||||
|  | ||||
| // Load atomically loads the wrapped value. | ||||
| func (p *UnsafePointer) Load() unsafe.Pointer { | ||||
| 	return atomic.LoadPointer(&p.v) | ||||
| } | ||||
|  | ||||
| // Store atomically stores the passed value. | ||||
| func (p *UnsafePointer) Store(val unsafe.Pointer) { | ||||
| 	atomic.StorePointer(&p.v, val) | ||||
| } | ||||
|  | ||||
| // Swap atomically swaps the wrapped unsafe.Pointer and returns the old value. | ||||
| func (p *UnsafePointer) Swap(val unsafe.Pointer) (old unsafe.Pointer) { | ||||
| 	return atomic.SwapPointer(&p.v, val) | ||||
| } | ||||
|  | ||||
| // CAS is an atomic compare-and-swap. | ||||
| // | ||||
| // Deprecated: Use CompareAndSwap | ||||
| func (p *UnsafePointer) CAS(old, new unsafe.Pointer) (swapped bool) { | ||||
| 	return p.CompareAndSwap(old, new) | ||||
| } | ||||
|  | ||||
| // CompareAndSwap is an atomic compare-and-swap. | ||||
| func (p *UnsafePointer) CompareAndSwap(old, new unsafe.Pointer) (swapped bool) { | ||||
| 	return atomic.CompareAndSwapPointer(&p.v, old, new) | ||||
| } | ||||
							
								
								
									
										4
									
								
								vendor/go.uber.org/atomic/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/go.uber.org/atomic/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -25,7 +25,7 @@ import "sync/atomic" | ||||
| // Value shadows the type of the same name from sync/atomic | ||||
| // https://godoc.org/sync/atomic#Value | ||||
| type Value struct { | ||||
| 	atomic.Value | ||||
|  | ||||
| 	_ nocmp // disallow non-atomic comparison | ||||
|  | ||||
| 	atomic.Value | ||||
| } | ||||
|   | ||||
							
								
								
									
										23
									
								
								vendor/go.uber.org/multierr/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/go.uber.org/multierr/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,23 +0,0 @@ | ||||
| sudo: false | ||||
| language: go | ||||
| go_import_path: go.uber.org/multierr | ||||
|  | ||||
| env: | ||||
|   global: | ||||
|     - GO111MODULE=on | ||||
|  | ||||
| go: | ||||
|   - oldstable | ||||
|   - stable | ||||
|  | ||||
| before_install: | ||||
| - go version | ||||
|  | ||||
| script: | ||||
| - | | ||||
|   set -e | ||||
|   make lint | ||||
|   make cover | ||||
|  | ||||
| after_success: | ||||
| - bash <(curl -s https://codecov.io/bash) | ||||
							
								
								
									
										35
									
								
								vendor/go.uber.org/multierr/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								vendor/go.uber.org/multierr/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,41 @@ | ||||
| Releases | ||||
| ======== | ||||
|  | ||||
| v1.11.0 (2023-03-28) | ||||
| ==================== | ||||
| -   `Errors` now supports any error that implements multiple-error | ||||
|     interface. | ||||
| -   Add `Every` function to allow checking if all errors in the chain | ||||
|     satisfies `errors.Is` against the target error. | ||||
|  | ||||
| v1.10.0 (2023-03-08) | ||||
| ==================== | ||||
|  | ||||
| -   Comply with Go 1.20's multiple-error interface. | ||||
| -   Drop Go 1.18 support. | ||||
|     Per the support policy, only Go 1.19 and 1.20 are supported now. | ||||
| -   Drop all non-test external dependencies. | ||||
|  | ||||
| v1.9.0 (2022-12-12) | ||||
| =================== | ||||
|  | ||||
| -   Add `AppendFunc` that allow passsing functions to similar to | ||||
|     `AppendInvoke`. | ||||
|  | ||||
| -   Bump up yaml.v3 dependency to 3.0.1. | ||||
|  | ||||
| v1.8.0 (2022-02-28) | ||||
| =================== | ||||
|  | ||||
| -   `Combine`: perform zero allocations when there are no errors. | ||||
|  | ||||
|  | ||||
| v1.7.0 (2021-05-06) | ||||
| =================== | ||||
|  | ||||
| -   Add `AppendInvoke` to append into errors from `defer` blocks. | ||||
|  | ||||
|  | ||||
| v1.6.0 (2020-09-14) | ||||
| =================== | ||||
|  | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.uber.org/multierr/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.uber.org/multierr/LICENSE.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| Copyright (c) 2017 Uber Technologies, Inc. | ||||
| Copyright (c) 2017-2021 Uber Technologies, Inc. | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|   | ||||
							
								
								
									
										6
									
								
								vendor/go.uber.org/multierr/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/go.uber.org/multierr/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -34,9 +34,5 @@ lint: gofmt golint staticcheck | ||||
|  | ||||
| .PHONY: cover | ||||
| cover: | ||||
| 	go test -coverprofile=cover.out -coverpkg=./... -v ./... | ||||
| 	go test -race -coverprofile=cover.out -coverpkg=./... -v ./... | ||||
| 	go tool cover -html=cover.out -o cover.html | ||||
|  | ||||
| update-license: | ||||
| 	@cd tools && go install go.uber.org/tools/update-license | ||||
| 	@$(GOBIN)/update-license $(GO_FILES) | ||||
|   | ||||
							
								
								
									
										30
									
								
								vendor/go.uber.org/multierr/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/go.uber.org/multierr/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,9 +2,29 @@ | ||||
|  | ||||
| `multierr` allows combining one or more Go `error`s together. | ||||
|  | ||||
| ## Features | ||||
|  | ||||
| - **Idiomatic**: | ||||
|   multierr follows best practices in Go, and keeps your code idiomatic. | ||||
|     - It keeps the underlying error type hidden, | ||||
|       allowing you to deal in `error` values exclusively. | ||||
|     - It provides APIs to safely append into an error from a `defer` statement. | ||||
| - **Performant**: | ||||
|   multierr is optimized for performance: | ||||
|     - It avoids allocations where possible. | ||||
|     - It utilizes slice resizing semantics to optimize common cases | ||||
|       like appending into the same error object from a loop. | ||||
| - **Interoperable**: | ||||
|   multierr interoperates with the Go standard library's error APIs seamlessly: | ||||
|     - The `errors.Is` and `errors.As` functions *just work*. | ||||
| - **Lightweight**: | ||||
|   multierr comes with virtually no dependencies. | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
|     go get -u go.uber.org/multierr | ||||
| ```bash | ||||
| go get -u go.uber.org/multierr@latest | ||||
| ``` | ||||
|  | ||||
| ## Status | ||||
|  | ||||
| @@ -15,9 +35,9 @@ Stable: No breaking changes will be made before 2.0. | ||||
| Released under the [MIT License]. | ||||
|  | ||||
| [MIT License]: LICENSE.txt | ||||
| [doc-img]: https://godoc.org/go.uber.org/multierr?status.svg | ||||
| [doc]: https://godoc.org/go.uber.org/multierr | ||||
| [ci-img]: https://travis-ci.com/uber-go/multierr.svg?branch=master | ||||
| [doc-img]: https://pkg.go.dev/badge/go.uber.org/multierr | ||||
| [doc]: https://pkg.go.dev/go.uber.org/multierr | ||||
| [ci-img]: https://github.com/uber-go/multierr/actions/workflows/go.yml/badge.svg | ||||
| [cov-img]: https://codecov.io/gh/uber-go/multierr/branch/master/graph/badge.svg | ||||
| [ci]: https://travis-ci.com/uber-go/multierr | ||||
| [ci]: https://github.com/uber-go/multierr/actions/workflows/go.yml | ||||
| [cov]: https://codecov.io/gh/uber-go/multierr | ||||
|   | ||||
							
								
								
									
										411
									
								
								vendor/go.uber.org/multierr/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										411
									
								
								vendor/go.uber.org/multierr/error.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // Copyright (c) 2019 Uber Technologies, Inc. | ||||
| // Copyright (c) 2017-2023 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -20,54 +20,109 @@ | ||||
|  | ||||
| // Package multierr allows combining one or more errors together. | ||||
| // | ||||
| // Overview | ||||
| // # Overview | ||||
| // | ||||
| // Errors can be combined with the use of the Combine function. | ||||
| // | ||||
| // 	multierr.Combine( | ||||
| // 		reader.Close(), | ||||
| // 		writer.Close(), | ||||
| // 		conn.Close(), | ||||
| // 	) | ||||
| //	multierr.Combine( | ||||
| //		reader.Close(), | ||||
| //		writer.Close(), | ||||
| //		conn.Close(), | ||||
| //	) | ||||
| // | ||||
| // If only two errors are being combined, the Append function may be used | ||||
| // instead. | ||||
| // | ||||
| // 	err = multierr.Append(reader.Close(), writer.Close()) | ||||
| // | ||||
| // This makes it possible to record resource cleanup failures from deferred | ||||
| // blocks with the help of named return values. | ||||
| // | ||||
| // 	func sendRequest(req Request) (err error) { | ||||
| // 		conn, err := openConnection() | ||||
| // 		if err != nil { | ||||
| // 			return err | ||||
| // 		} | ||||
| // 		defer func() { | ||||
| // 			err = multierr.Append(err, conn.Close()) | ||||
| // 		}() | ||||
| // 		// ... | ||||
| // 	} | ||||
| //	err = multierr.Append(reader.Close(), writer.Close()) | ||||
| // | ||||
| // The underlying list of errors for a returned error object may be retrieved | ||||
| // with the Errors function. | ||||
| // | ||||
| // 	errors := multierr.Errors(err) | ||||
| // 	if len(errors) > 0 { | ||||
| // 		fmt.Println("The following errors occurred:", errors) | ||||
| // 	} | ||||
| //	errors := multierr.Errors(err) | ||||
| //	if len(errors) > 0 { | ||||
| //		fmt.Println("The following errors occurred:", errors) | ||||
| //	} | ||||
| // | ||||
| // Advanced Usage | ||||
| // # Appending from a loop | ||||
| // | ||||
| // You sometimes need to append into an error from a loop. | ||||
| // | ||||
| //	var err error | ||||
| //	for _, item := range items { | ||||
| //		err = multierr.Append(err, process(item)) | ||||
| //	} | ||||
| // | ||||
| // Cases like this may require knowledge of whether an individual instance | ||||
| // failed. This usually requires introduction of a new variable. | ||||
| // | ||||
| //	var err error | ||||
| //	for _, item := range items { | ||||
| //		if perr := process(item); perr != nil { | ||||
| //			log.Warn("skipping item", item) | ||||
| //			err = multierr.Append(err, perr) | ||||
| //		} | ||||
| //	} | ||||
| // | ||||
| // multierr includes AppendInto to simplify cases like this. | ||||
| // | ||||
| //	var err error | ||||
| //	for _, item := range items { | ||||
| //		if multierr.AppendInto(&err, process(item)) { | ||||
| //			log.Warn("skipping item", item) | ||||
| //		} | ||||
| //	} | ||||
| // | ||||
| // This will append the error into the err variable, and return true if that | ||||
| // individual error was non-nil. | ||||
| // | ||||
| // See [AppendInto] for more information. | ||||
| // | ||||
| // # Deferred Functions | ||||
| // | ||||
| // Go makes it possible to modify the return value of a function in a defer | ||||
| // block if the function was using named returns. This makes it possible to | ||||
| // record resource cleanup failures from deferred blocks. | ||||
| // | ||||
| //	func sendRequest(req Request) (err error) { | ||||
| //		conn, err := openConnection() | ||||
| //		if err != nil { | ||||
| //			return err | ||||
| //		} | ||||
| //		defer func() { | ||||
| //			err = multierr.Append(err, conn.Close()) | ||||
| //		}() | ||||
| //		// ... | ||||
| //	} | ||||
| // | ||||
| // multierr provides the Invoker type and AppendInvoke function to make cases | ||||
| // like the above simpler and obviate the need for a closure. The following is | ||||
| // roughly equivalent to the example above. | ||||
| // | ||||
| //	func sendRequest(req Request) (err error) { | ||||
| //		conn, err := openConnection() | ||||
| //		if err != nil { | ||||
| //			return err | ||||
| //		} | ||||
| //		defer multierr.AppendInvoke(&err, multierr.Close(conn)) | ||||
| //		// ... | ||||
| //	} | ||||
| // | ||||
| // See [AppendInvoke] and [Invoker] for more information. | ||||
| // | ||||
| // NOTE: If you're modifying an error from inside a defer, you MUST use a named | ||||
| // return value for that function. | ||||
| // | ||||
| // # Advanced Usage | ||||
| // | ||||
| // Errors returned by Combine and Append MAY implement the following | ||||
| // interface. | ||||
| // | ||||
| // 	type errorGroup interface { | ||||
| // 		// Returns a slice containing the underlying list of errors. | ||||
| // 		// | ||||
| // 		// This slice MUST NOT be modified by the caller. | ||||
| // 		Errors() []error | ||||
| // 	} | ||||
| //	type errorGroup interface { | ||||
| //		// Returns a slice containing the underlying list of errors. | ||||
| //		// | ||||
| //		// This slice MUST NOT be modified by the caller. | ||||
| //		Errors() []error | ||||
| //	} | ||||
| // | ||||
| // Note that if you need access to list of errors behind a multierr error, you | ||||
| // should prefer using the Errors function. That said, if you need cheap | ||||
| @@ -76,23 +131,23 @@ | ||||
| // because errors returned by Combine and Append are not guaranteed to | ||||
| // implement this interface. | ||||
| // | ||||
| // 	var errors []error | ||||
| // 	group, ok := err.(errorGroup) | ||||
| // 	if ok { | ||||
| // 		errors = group.Errors() | ||||
| // 	} else { | ||||
| // 		errors = []error{err} | ||||
| // 	} | ||||
| //	var errors []error | ||||
| //	group, ok := err.(errorGroup) | ||||
| //	if ok { | ||||
| //		errors = group.Errors() | ||||
| //	} else { | ||||
| //		errors = []error{err} | ||||
| //	} | ||||
| package multierr // import "go.uber.org/multierr" | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"strings" | ||||
| 	"sync" | ||||
|  | ||||
| 	"go.uber.org/atomic" | ||||
| 	"sync/atomic" | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| @@ -132,34 +187,15 @@ type errorGroup interface { | ||||
| // Errors returns a slice containing zero or more errors that the supplied | ||||
| // error is composed of. If the error is nil, a nil slice is returned. | ||||
| // | ||||
| // 	err := multierr.Append(r.Close(), w.Close()) | ||||
| // 	errors := multierr.Errors(err) | ||||
| //	err := multierr.Append(r.Close(), w.Close()) | ||||
| //	errors := multierr.Errors(err) | ||||
| // | ||||
| // If the error is not composed of other errors, the returned slice contains | ||||
| // just the error that was passed in. | ||||
| // | ||||
| // Callers of this function are free to modify the returned slice. | ||||
| func Errors(err error) []error { | ||||
| 	if err == nil { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	// Note that we're casting to multiError, not errorGroup. Our contract is | ||||
| 	// that returned errors MAY implement errorGroup. Errors, however, only | ||||
| 	// has special behavior for multierr-specific error objects. | ||||
| 	// | ||||
| 	// This behavior can be expanded in the future but I think it's prudent to | ||||
| 	// start with as little as possible in terms of contract and possibility | ||||
| 	// of misuse. | ||||
| 	eg, ok := err.(*multiError) | ||||
| 	if !ok { | ||||
| 		return []error{err} | ||||
| 	} | ||||
|  | ||||
| 	errors := eg.Errors() | ||||
| 	result := make([]error, len(errors)) | ||||
| 	copy(result, errors) | ||||
| 	return result | ||||
| 	return extractErrors(err) | ||||
| } | ||||
|  | ||||
| // multiError is an error that holds one or more errors. | ||||
| @@ -174,8 +210,6 @@ type multiError struct { | ||||
| 	errors     []error | ||||
| } | ||||
|  | ||||
| var _ errorGroup = (*multiError)(nil) | ||||
|  | ||||
| // Errors returns the list of underlying errors. | ||||
| // | ||||
| // This slice MUST NOT be modified. | ||||
| @@ -201,6 +235,17 @@ func (merr *multiError) Error() string { | ||||
| 	return result | ||||
| } | ||||
|  | ||||
| // Every compares every error in the given err against the given target error | ||||
| // using [errors.Is], and returns true only if every comparison returned true. | ||||
| func Every(err error, target error) bool { | ||||
| 	for _, e := range extractErrors(err) { | ||||
| 		if !errors.Is(e, target) { | ||||
| 			return false | ||||
| 		} | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| func (merr *multiError) Format(f fmt.State, c rune) { | ||||
| 	if c == 'v' && f.Flag('+') { | ||||
| 		merr.writeMultiline(f) | ||||
| @@ -292,6 +337,14 @@ func inspect(errors []error) (res inspectResult) { | ||||
|  | ||||
| // fromSlice converts the given list of errors into a single error. | ||||
| func fromSlice(errors []error) error { | ||||
| 	// Don't pay to inspect small slices. | ||||
| 	switch len(errors) { | ||||
| 	case 0: | ||||
| 		return nil | ||||
| 	case 1: | ||||
| 		return errors[0] | ||||
| 	} | ||||
|  | ||||
| 	res := inspect(errors) | ||||
| 	switch res.Count { | ||||
| 	case 0: | ||||
| @@ -301,8 +354,12 @@ func fromSlice(errors []error) error { | ||||
| 		return errors[res.FirstErrorIdx] | ||||
| 	case len(errors): | ||||
| 		if !res.ContainsMultiError { | ||||
| 			// already flat | ||||
| 			return &multiError{errors: errors} | ||||
| 			// Error list is flat. Make a copy of it | ||||
| 			// Otherwise "errors" escapes to the heap | ||||
| 			// unconditionally for all other cases. | ||||
| 			// This lets us optimize for the "no errors" case. | ||||
| 			out := append(([]error)(nil), errors...) | ||||
| 			return &multiError{errors: out} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -327,32 +384,32 @@ func fromSlice(errors []error) error { | ||||
| // If zero arguments were passed or if all items are nil, a nil error is | ||||
| // returned. | ||||
| // | ||||
| // 	Combine(nil, nil)  // == nil | ||||
| //	Combine(nil, nil)  // == nil | ||||
| // | ||||
| // If only a single error was passed, it is returned as-is. | ||||
| // | ||||
| // 	Combine(err)  // == err | ||||
| //	Combine(err)  // == err | ||||
| // | ||||
| // Combine skips over nil arguments so this function may be used to combine | ||||
| // together errors from operations that fail independently of each other. | ||||
| // | ||||
| // 	multierr.Combine( | ||||
| // 		reader.Close(), | ||||
| // 		writer.Close(), | ||||
| // 		pipe.Close(), | ||||
| // 	) | ||||
| //	multierr.Combine( | ||||
| //		reader.Close(), | ||||
| //		writer.Close(), | ||||
| //		pipe.Close(), | ||||
| //	) | ||||
| // | ||||
| // If any of the passed errors is a multierr error, it will be flattened along | ||||
| // with the other errors. | ||||
| // | ||||
| // 	multierr.Combine(multierr.Combine(err1, err2), err3) | ||||
| // 	// is the same as | ||||
| // 	multierr.Combine(err1, err2, err3) | ||||
| //	multierr.Combine(multierr.Combine(err1, err2), err3) | ||||
| //	// is the same as | ||||
| //	multierr.Combine(err1, err2, err3) | ||||
| // | ||||
| // The returned error formats into a readable multi-line error message if | ||||
| // formatted with %+v. | ||||
| // | ||||
| // 	fmt.Sprintf("%+v", multierr.Combine(err1, err2)) | ||||
| //	fmt.Sprintf("%+v", multierr.Combine(err1, err2)) | ||||
| func Combine(errors ...error) error { | ||||
| 	return fromSlice(errors) | ||||
| } | ||||
| @@ -362,16 +419,19 @@ func Combine(errors ...error) error { | ||||
| // This function is a specialization of Combine for the common case where | ||||
| // there are only two errors. | ||||
| // | ||||
| // 	err = multierr.Append(reader.Close(), writer.Close()) | ||||
| //	err = multierr.Append(reader.Close(), writer.Close()) | ||||
| // | ||||
| // The following pattern may also be used to record failure of deferred | ||||
| // operations without losing information about the original error. | ||||
| // | ||||
| // 	func doSomething(..) (err error) { | ||||
| // 		f := acquireResource() | ||||
| // 		defer func() { | ||||
| // 			err = multierr.Append(err, f.Close()) | ||||
| // 		}() | ||||
| //	func doSomething(..) (err error) { | ||||
| //		f := acquireResource() | ||||
| //		defer func() { | ||||
| //			err = multierr.Append(err, f.Close()) | ||||
| //		}() | ||||
| // | ||||
| // Note that the variable MUST be a named return to append an error to it from | ||||
| // the defer statement. See also [AppendInvoke]. | ||||
| func Append(left error, right error) error { | ||||
| 	switch { | ||||
| 	case left == nil: | ||||
| @@ -401,37 +461,37 @@ func Append(left error, right error) error { | ||||
| // AppendInto appends an error into the destination of an error pointer and | ||||
| // returns whether the error being appended was non-nil. | ||||
| // | ||||
| // 	var err error | ||||
| // 	multierr.AppendInto(&err, r.Close()) | ||||
| // 	multierr.AppendInto(&err, w.Close()) | ||||
| //	var err error | ||||
| //	multierr.AppendInto(&err, r.Close()) | ||||
| //	multierr.AppendInto(&err, w.Close()) | ||||
| // | ||||
| // The above is equivalent to, | ||||
| // | ||||
| // 	err := multierr.Append(r.Close(), w.Close()) | ||||
| //	err := multierr.Append(r.Close(), w.Close()) | ||||
| // | ||||
| // As AppendInto reports whether the provided error was non-nil, it may be | ||||
| // used to build a multierr error in a loop more ergonomically. For example: | ||||
| // | ||||
| // 	var err error | ||||
| // 	for line := range lines { | ||||
| // 		var item Item | ||||
| // 		if multierr.AppendInto(&err, parse(line, &item)) { | ||||
| // 			continue | ||||
| // 		} | ||||
| // 		items = append(items, item) | ||||
| // 	} | ||||
| //	var err error | ||||
| //	for line := range lines { | ||||
| //		var item Item | ||||
| //		if multierr.AppendInto(&err, parse(line, &item)) { | ||||
| //			continue | ||||
| //		} | ||||
| //		items = append(items, item) | ||||
| //	} | ||||
| // | ||||
| // Compare this with a verison that relies solely on Append: | ||||
| // Compare this with a version that relies solely on Append: | ||||
| // | ||||
| // 	var err error | ||||
| // 	for line := range lines { | ||||
| // 		var item Item | ||||
| // 		if parseErr := parse(line, &item); parseErr != nil { | ||||
| // 			err = multierr.Append(err, parseErr) | ||||
| // 			continue | ||||
| // 		} | ||||
| // 		items = append(items, item) | ||||
| // 	} | ||||
| //	var err error | ||||
| //	for line := range lines { | ||||
| //		var item Item | ||||
| //		if parseErr := parse(line, &item); parseErr != nil { | ||||
| //			err = multierr.Append(err, parseErr) | ||||
| //			continue | ||||
| //		} | ||||
| //		items = append(items, item) | ||||
| //	} | ||||
| func AppendInto(into *error, err error) (errored bool) { | ||||
| 	if into == nil { | ||||
| 		// We panic if 'into' is nil. This is not documented above | ||||
| @@ -447,3 +507,140 @@ func AppendInto(into *error, err error) (errored bool) { | ||||
| 	*into = Append(*into, err) | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| // Invoker is an operation that may fail with an error. Use it with | ||||
| // AppendInvoke to append the result of calling the function into an error. | ||||
| // This allows you to conveniently defer capture of failing operations. | ||||
| // | ||||
| // See also, [Close] and [Invoke]. | ||||
| type Invoker interface { | ||||
| 	Invoke() error | ||||
| } | ||||
|  | ||||
| // Invoke wraps a function which may fail with an error to match the Invoker | ||||
| // interface. Use it to supply functions matching this signature to | ||||
| // AppendInvoke. | ||||
| // | ||||
| // For example, | ||||
| // | ||||
| //	func processReader(r io.Reader) (err error) { | ||||
| //		scanner := bufio.NewScanner(r) | ||||
| //		defer multierr.AppendInvoke(&err, multierr.Invoke(scanner.Err)) | ||||
| //		for scanner.Scan() { | ||||
| //			// ... | ||||
| //		} | ||||
| //		// ... | ||||
| //	} | ||||
| // | ||||
| // In this example, the following line will construct the Invoker right away, | ||||
| // but defer the invocation of scanner.Err() until the function returns. | ||||
| // | ||||
| //	defer multierr.AppendInvoke(&err, multierr.Invoke(scanner.Err)) | ||||
| // | ||||
| // Note that the error you're appending to from the defer statement MUST be a | ||||
| // named return. | ||||
| type Invoke func() error | ||||
|  | ||||
| // Invoke calls the supplied function and returns its result. | ||||
| func (i Invoke) Invoke() error { return i() } | ||||
|  | ||||
| // Close builds an Invoker that closes the provided io.Closer. Use it with | ||||
| // AppendInvoke to close io.Closers and append their results into an error. | ||||
| // | ||||
| // For example, | ||||
| // | ||||
| //	func processFile(path string) (err error) { | ||||
| //		f, err := os.Open(path) | ||||
| //		if err != nil { | ||||
| //			return err | ||||
| //		} | ||||
| //		defer multierr.AppendInvoke(&err, multierr.Close(f)) | ||||
| //		return processReader(f) | ||||
| //	} | ||||
| // | ||||
| // In this example, multierr.Close will construct the Invoker right away, but | ||||
| // defer the invocation of f.Close until the function returns. | ||||
| // | ||||
| //	defer multierr.AppendInvoke(&err, multierr.Close(f)) | ||||
| // | ||||
| // Note that the error you're appending to from the defer statement MUST be a | ||||
| // named return. | ||||
| func Close(closer io.Closer) Invoker { | ||||
| 	return Invoke(closer.Close) | ||||
| } | ||||
|  | ||||
| // AppendInvoke appends the result of calling the given Invoker into the | ||||
| // provided error pointer. Use it with named returns to safely defer | ||||
| // invocation of fallible operations until a function returns, and capture the | ||||
| // resulting errors. | ||||
| // | ||||
| //	func doSomething(...) (err error) { | ||||
| //		// ... | ||||
| //		f, err := openFile(..) | ||||
| //		if err != nil { | ||||
| //			return err | ||||
| //		} | ||||
| // | ||||
| //		// multierr will call f.Close() when this function returns and | ||||
| //		// if the operation fails, its append its error into the | ||||
| //		// returned error. | ||||
| //		defer multierr.AppendInvoke(&err, multierr.Close(f)) | ||||
| // | ||||
| //		scanner := bufio.NewScanner(f) | ||||
| //		// Similarly, this scheduled scanner.Err to be called and | ||||
| //		// inspected when the function returns and append its error | ||||
| //		// into the returned error. | ||||
| //		defer multierr.AppendInvoke(&err, multierr.Invoke(scanner.Err)) | ||||
| // | ||||
| //		// ... | ||||
| //	} | ||||
| // | ||||
| // NOTE: If used with a defer, the error variable MUST be a named return. | ||||
| // | ||||
| // Without defer, AppendInvoke behaves exactly like AppendInto. | ||||
| // | ||||
| //	err := // ... | ||||
| //	multierr.AppendInvoke(&err, mutltierr.Invoke(foo)) | ||||
| // | ||||
| //	// ...is roughly equivalent to... | ||||
| // | ||||
| //	err := // ... | ||||
| //	multierr.AppendInto(&err, foo()) | ||||
| // | ||||
| // The advantage of the indirection introduced by Invoker is to make it easy | ||||
| // to defer the invocation of a function. Without this indirection, the | ||||
| // invoked function will be evaluated at the time of the defer block rather | ||||
| // than when the function returns. | ||||
| // | ||||
| //	// BAD: This is likely not what the caller intended. This will evaluate | ||||
| //	// foo() right away and append its result into the error when the | ||||
| //	// function returns. | ||||
| //	defer multierr.AppendInto(&err, foo()) | ||||
| // | ||||
| //	// GOOD: This will defer invocation of foo unutil the function returns. | ||||
| //	defer multierr.AppendInvoke(&err, multierr.Invoke(foo)) | ||||
| // | ||||
| // multierr provides a few Invoker implementations out of the box for | ||||
| // convenience. See [Invoker] for more information. | ||||
| func AppendInvoke(into *error, invoker Invoker) { | ||||
| 	AppendInto(into, invoker.Invoke()) | ||||
| } | ||||
|  | ||||
| // AppendFunc is a shorthand for [AppendInvoke]. | ||||
| // It allows using function or method value directly | ||||
| // without having to wrap it into an [Invoker] interface. | ||||
| // | ||||
| //	func doSomething(...) (err error) { | ||||
| //		w, err := startWorker(...) | ||||
| //		if err != nil { | ||||
| //			return err | ||||
| //		} | ||||
| // | ||||
| //		// multierr will call w.Stop() when this function returns and | ||||
| //		// if the operation fails, it appends its error into the | ||||
| //		// returned error. | ||||
| //		defer multierr.AppendFunc(&err, w.Stop) | ||||
| //	} | ||||
| func AppendFunc(into *error, fn func() error) { | ||||
| 	AppendInvoke(into, Invoke(fn)) | ||||
| } | ||||
|   | ||||
							
								
								
									
										48
									
								
								vendor/go.uber.org/multierr/error_post_go120.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/go.uber.org/multierr/error_post_go120.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| // Copyright (c) 2017-2023 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
|  | ||||
| //go:build go1.20 | ||||
| // +build go1.20 | ||||
|  | ||||
| package multierr | ||||
|  | ||||
| // Unwrap returns a list of errors wrapped by this multierr. | ||||
| func (merr *multiError) Unwrap() []error { | ||||
| 	return merr.Errors() | ||||
| } | ||||
|  | ||||
| type multipleErrors interface { | ||||
| 	Unwrap() []error | ||||
| } | ||||
|  | ||||
| func extractErrors(err error) []error { | ||||
| 	if err == nil { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	// check if the given err is an Unwrapable error that | ||||
| 	// implements multipleErrors interface. | ||||
| 	eg, ok := err.(multipleErrors) | ||||
| 	if !ok { | ||||
| 		return []error{err} | ||||
| 	} | ||||
|  | ||||
| 	return append(([]error)(nil), eg.Unwrap()...) | ||||
| } | ||||
							
								
								
									
										31
									
								
								vendor/go.uber.org/multierr/go113.go → vendor/go.uber.org/multierr/error_pre_go120.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/go.uber.org/multierr/go113.go → vendor/go.uber.org/multierr/error_pre_go120.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| // Copyright (c) 2019 Uber Technologies, Inc. | ||||
| // Copyright (c) 2017-2023 Uber Technologies, Inc. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -18,12 +18,19 @@ | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
| 
 | ||||
| // +build go1.13 | ||||
| //go:build !go1.20 | ||||
| // +build !go1.20 | ||||
| 
 | ||||
| package multierr | ||||
| 
 | ||||
| import "errors" | ||||
| 
 | ||||
| // Versions of Go before 1.20 did not support the Unwrap() []error method. | ||||
| // This provides a similar behavior by implementing the Is(..) and As(..) | ||||
| // methods. | ||||
| // See the errors.Join proposal for details: | ||||
| // https://github.com/golang/go/issues/53435 | ||||
| 
 | ||||
| // As attempts to find the first error in the error list that matches the type | ||||
| // of the value that target points to. | ||||
| // | ||||
| @@ -50,3 +57,23 @@ func (merr *multiError) Is(target error) bool { | ||||
| 	} | ||||
| 	return false | ||||
| } | ||||
| 
 | ||||
| func extractErrors(err error) []error { | ||||
| 	if err == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	// Note that we're casting to multiError, not errorGroup. Our contract is | ||||
| 	// that returned errors MAY implement errorGroup. Errors, however, only | ||||
| 	// has special behavior for multierr-specific error objects. | ||||
| 	// | ||||
| 	// This behavior can be expanded in the future but I think it's prudent to | ||||
| 	// start with as little as possible in terms of contract and possibility | ||||
| 	// of misuse. | ||||
| 	eg, ok := err.(*multiError) | ||||
| 	if !ok { | ||||
| 		return []error{err} | ||||
| 	} | ||||
| 
 | ||||
| 	return append(([]error)(nil), eg.Errors()...) | ||||
| } | ||||
							
								
								
									
										8
									
								
								vendor/go.uber.org/multierr/glide.yaml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/go.uber.org/multierr/glide.yaml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,8 +0,0 @@ | ||||
| package: go.uber.org/multierr | ||||
| import: | ||||
| - package: go.uber.org/atomic | ||||
|   version: ^1 | ||||
| testImport: | ||||
| - package: github.com/stretchr/testify | ||||
|   subpackages: | ||||
|   - assert | ||||
							
								
								
									
										8
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -913,15 +913,15 @@ go.starlark.net/resolve | ||||
| go.starlark.net/starlark | ||||
| go.starlark.net/starlarkstruct | ||||
| go.starlark.net/syntax | ||||
| # go.uber.org/atomic v1.7.0 | ||||
| ## explicit; go 1.13 | ||||
| # go.uber.org/atomic v1.10.0 | ||||
| ## explicit; go 1.18 | ||||
| go.uber.org/atomic | ||||
| # go.uber.org/goleak v1.2.1 | ||||
| ## explicit; go 1.18 | ||||
| go.uber.org/goleak | ||||
| go.uber.org/goleak/internal/stack | ||||
| # go.uber.org/multierr v1.6.0 | ||||
| ## explicit; go 1.12 | ||||
| # go.uber.org/multierr v1.11.0 | ||||
| ## explicit; go 1.19 | ||||
| go.uber.org/multierr | ||||
| # go.uber.org/zap v1.19.0 | ||||
| ## explicit; go 1.13 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot