re2 1.20.0 → 1.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1492) hide show
  1. package/.github/actions/linux-alpine-node-16/entrypoint.sh +2 -0
  2. package/.github/actions/linux-alpine-node-18/entrypoint.sh +3 -1
  3. package/.github/actions/linux-alpine-node-20/entrypoint.sh +3 -1
  4. package/.github/actions/linux-node-12/entrypoint.sh +2 -0
  5. package/.github/actions/linux-node-18/entrypoint.sh +3 -1
  6. package/.github/actions/linux-node-20/entrypoint.sh +3 -1
  7. package/README.md +2 -0
  8. package/binding.gyp +1 -0
  9. package/package.json +2 -2
  10. package/vendor/abseil-cpp/.clang-format +4 -0
  11. package/vendor/abseil-cpp/.github/ISSUE_TEMPLATE/00-bug_report.yml +53 -0
  12. package/vendor/abseil-cpp/.github/ISSUE_TEMPLATE/config.yml +5 -0
  13. package/vendor/abseil-cpp/ABSEIL_ISSUE_TEMPLATE.md +22 -0
  14. package/vendor/abseil-cpp/AUTHORS +6 -0
  15. package/vendor/abseil-cpp/BUILD.bazel +25 -0
  16. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +809 -0
  17. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +466 -0
  18. package/vendor/abseil-cpp/CMake/Googletest/CMakeLists.txt.in +14 -0
  19. package/vendor/abseil-cpp/CMake/Googletest/DownloadGTest.cmake +41 -0
  20. package/vendor/abseil-cpp/CMake/README.md +188 -0
  21. package/vendor/abseil-cpp/CMake/abslConfig.cmake.in +8 -0
  22. package/vendor/abseil-cpp/CMake/install_test_project/CMakeLists.txt +25 -0
  23. package/vendor/abseil-cpp/CMake/install_test_project/simple.cc +32 -0
  24. package/vendor/abseil-cpp/CMake/install_test_project/test.sh +112 -0
  25. package/vendor/abseil-cpp/CMakeLists.txt +239 -0
  26. package/vendor/abseil-cpp/CONTRIBUTING.md +141 -0
  27. package/vendor/abseil-cpp/FAQ.md +167 -0
  28. package/vendor/abseil-cpp/LICENSE +203 -0
  29. package/vendor/abseil-cpp/README.md +163 -0
  30. package/vendor/abseil-cpp/UPGRADES.md +17 -0
  31. package/vendor/abseil-cpp/WORKSPACE +62 -0
  32. package/vendor/abseil-cpp/absl/BUILD.bazel +125 -0
  33. package/vendor/abseil-cpp/absl/CMakeLists.txt +44 -0
  34. package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +229 -0
  35. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +92 -0
  36. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +70 -0
  37. package/vendor/abseil-cpp/absl/algorithm/algorithm.h +159 -0
  38. package/vendor/abseil-cpp/absl/algorithm/algorithm_test.cc +191 -0
  39. package/vendor/abseil-cpp/absl/algorithm/container.h +1773 -0
  40. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +1127 -0
  41. package/vendor/abseil-cpp/absl/algorithm/equal_benchmark.cc +126 -0
  42. package/vendor/abseil-cpp/absl/base/BUILD.bazel +783 -0
  43. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +685 -0
  44. package/vendor/abseil-cpp/absl/base/attributes.h +782 -0
  45. package/vendor/abseil-cpp/absl/base/bit_cast_test.cc +109 -0
  46. package/vendor/abseil-cpp/absl/base/call_once.h +219 -0
  47. package/vendor/abseil-cpp/absl/base/call_once_test.cc +107 -0
  48. package/vendor/abseil-cpp/absl/base/casts.h +180 -0
  49. package/vendor/abseil-cpp/absl/base/config.h +954 -0
  50. package/vendor/abseil-cpp/absl/base/config_test.cc +60 -0
  51. package/vendor/abseil-cpp/absl/base/const_init.h +76 -0
  52. package/vendor/abseil-cpp/absl/base/dynamic_annotations.h +471 -0
  53. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +959 -0
  54. package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +64 -0
  55. package/vendor/abseil-cpp/absl/base/inline_variable_test_a.cc +27 -0
  56. package/vendor/abseil-cpp/absl/base/inline_variable_test_b.cc +27 -0
  57. package/vendor/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  58. package/vendor/abseil-cpp/absl/base/internal/atomic_hook_test.cc +97 -0
  59. package/vendor/abseil-cpp/absl/base/internal/atomic_hook_test_helper.cc +32 -0
  60. package/vendor/abseil-cpp/absl/base/internal/atomic_hook_test_helper.h +34 -0
  61. package/vendor/abseil-cpp/absl/base/internal/cmake_thread_test.cc +22 -0
  62. package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +77 -0
  63. package/vendor/abseil-cpp/absl/base/internal/cycleclock.h +144 -0
  64. package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  65. package/vendor/abseil-cpp/absl/base/internal/direct_mmap.h +170 -0
  66. package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  67. package/vendor/abseil-cpp/absl/base/internal/endian.h +282 -0
  68. package/vendor/abseil-cpp/absl/base/internal/endian_test.cc +263 -0
  69. package/vendor/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  70. package/vendor/abseil-cpp/absl/base/internal/errno_saver_test.cc +45 -0
  71. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.cc +79 -0
  72. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +1109 -0
  73. package/vendor/abseil-cpp/absl/base/internal/exception_testing.h +42 -0
  74. package/vendor/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
  75. package/vendor/abseil-cpp/absl/base/internal/fast_type_id_test.cc +123 -0
  76. package/vendor/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  77. package/vendor/abseil-cpp/absl/base/internal/identity.h +37 -0
  78. package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
  79. package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +46 -0
  80. package/vendor/abseil-cpp/absl/base/internal/invoke.h +241 -0
  81. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  82. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  83. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc_test.cc +180 -0
  84. package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +134 -0
  85. package/vendor/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  86. package/vendor/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  87. package/vendor/abseil-cpp/absl/base/internal/prefetch_test.cc +43 -0
  88. package/vendor/abseil-cpp/absl/base/internal/pretty_function.h +33 -0
  89. package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +253 -0
  90. package/vendor/abseil-cpp/absl/base/internal/raw_logging.h +195 -0
  91. package/vendor/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  92. package/vendor/abseil-cpp/absl/base/internal/scoped_set_env.cc +81 -0
  93. package/vendor/abseil-cpp/absl/base/internal/scoped_set_env.h +45 -0
  94. package/vendor/abseil-cpp/absl/base/internal/scoped_set_env_test.cc +99 -0
  95. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +232 -0
  96. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +252 -0
  97. package/vendor/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  98. package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +52 -0
  99. package/vendor/abseil-cpp/absl/base/internal/spinlock_linux.inc +71 -0
  100. package/vendor/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  101. package/vendor/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  102. package/vendor/abseil-cpp/absl/base/internal/spinlock_wait.h +95 -0
  103. package/vendor/abseil-cpp/absl/base/internal/spinlock_win32.inc +40 -0
  104. package/vendor/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  105. package/vendor/abseil-cpp/absl/base/internal/strerror.h +39 -0
  106. package/vendor/abseil-cpp/absl/base/internal/strerror_benchmark.cc +29 -0
  107. package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +88 -0
  108. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +511 -0
  109. package/vendor/abseil-cpp/absl/base/internal/sysinfo.h +74 -0
  110. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +88 -0
  111. package/vendor/abseil-cpp/absl/base/internal/thread_annotations.h +280 -0
  112. package/vendor/abseil-cpp/absl/base/internal/thread_identity.cc +156 -0
  113. package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +269 -0
  114. package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +38 -0
  115. package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +129 -0
  116. package/vendor/abseil-cpp/absl/base/internal/throw_delegate.cc +212 -0
  117. package/vendor/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
  118. package/vendor/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +68 -0
  119. package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +82 -0
  120. package/vendor/abseil-cpp/absl/base/internal/unique_small_name_test.cc +77 -0
  121. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +153 -0
  122. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +96 -0
  123. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  124. package/vendor/abseil-cpp/absl/base/invoke_test.cc +331 -0
  125. package/vendor/abseil-cpp/absl/base/log_severity.cc +55 -0
  126. package/vendor/abseil-cpp/absl/base/log_severity.h +172 -0
  127. package/vendor/abseil-cpp/absl/base/log_severity_test.cc +245 -0
  128. package/vendor/abseil-cpp/absl/base/macros.h +141 -0
  129. package/vendor/abseil-cpp/absl/base/optimization.h +304 -0
  130. package/vendor/abseil-cpp/absl/base/optimization_test.cc +129 -0
  131. package/vendor/abseil-cpp/absl/base/options.h +232 -0
  132. package/vendor/abseil-cpp/absl/base/policy_checks.h +113 -0
  133. package/vendor/abseil-cpp/absl/base/port.h +25 -0
  134. package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +79 -0
  135. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +272 -0
  136. package/vendor/abseil-cpp/absl/base/thread_annotations.h +335 -0
  137. package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +175 -0
  138. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +65 -0
  139. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +56 -0
  140. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  141. package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +311 -0
  142. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  143. package/vendor/abseil-cpp/absl/container/BUILD.bazel +1031 -0
  144. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +967 -0
  145. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +764 -0
  146. package/vendor/abseil-cpp/absl/container/btree_map.h +885 -0
  147. package/vendor/abseil-cpp/absl/container/btree_set.h +821 -0
  148. package/vendor/abseil-cpp/absl/container/btree_test.cc +3470 -0
  149. package/vendor/abseil-cpp/absl/container/btree_test.h +166 -0
  150. package/vendor/abseil-cpp/absl/container/fixed_array.h +531 -0
  151. package/vendor/abseil-cpp/absl/container/fixed_array_benchmark.cc +67 -0
  152. package/vendor/abseil-cpp/absl/container/fixed_array_exception_safety_test.cc +201 -0
  153. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +837 -0
  154. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +613 -0
  155. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +325 -0
  156. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  157. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +178 -0
  158. package/vendor/abseil-cpp/absl/container/inlined_vector.h +914 -0
  159. package/vendor/abseil-cpp/absl/container/inlined_vector_benchmark.cc +829 -0
  160. package/vendor/abseil-cpp/absl/container/inlined_vector_exception_safety_test.cc +508 -0
  161. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2060 -0
  162. package/vendor/abseil-cpp/absl/container/internal/btree.h +2982 -0
  163. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +713 -0
  164. package/vendor/abseil-cpp/absl/container/internal/common.h +207 -0
  165. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  166. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits_test.cc +120 -0
  167. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +290 -0
  168. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +419 -0
  169. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +454 -0
  170. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +257 -0
  171. package/vendor/abseil-cpp/absl/container/internal/counting_allocator.h +122 -0
  172. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +163 -0
  173. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +383 -0
  174. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +76 -0
  175. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +182 -0
  176. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +184 -0
  177. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing_test.cc +45 -0
  178. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +157 -0
  179. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +80 -0
  180. package/vendor/abseil-cpp/absl/container/internal/hashtable_debug.h +110 -0
  181. package/vendor/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  182. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +283 -0
  183. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +267 -0
  184. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  185. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +428 -0
  186. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +1031 -0
  187. package/vendor/abseil-cpp/absl/container/internal/layout.h +743 -0
  188. package/vendor/abseil-cpp/absl/container/internal/layout_benchmark.cc +122 -0
  189. package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +1641 -0
  190. package/vendor/abseil-cpp/absl/container/internal/node_slot_policy.h +92 -0
  191. package/vendor/abseil-cpp/absl/container/internal/node_slot_policy_test.cc +69 -0
  192. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +198 -0
  193. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +222 -0
  194. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +2685 -0
  195. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +505 -0
  196. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +544 -0
  197. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +590 -0
  198. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +2324 -0
  199. package/vendor/abseil-cpp/absl/container/internal/test_instance_tracker.cc +29 -0
  200. package/vendor/abseil-cpp/absl/container/internal/test_instance_tracker.h +274 -0
  201. package/vendor/abseil-cpp/absl/container/internal/test_instance_tracker_test.cc +184 -0
  202. package/vendor/abseil-cpp/absl/container/internal/tracked.h +83 -0
  203. package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +494 -0
  204. package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +117 -0
  205. package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +87 -0
  206. package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +352 -0
  207. package/vendor/abseil-cpp/absl/container/internal/unordered_map_test.cc +50 -0
  208. package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +496 -0
  209. package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +91 -0
  210. package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +86 -0
  211. package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +221 -0
  212. package/vendor/abseil-cpp/absl/container/internal/unordered_set_test.cc +41 -0
  213. package/vendor/abseil-cpp/absl/container/node_hash_map.h +604 -0
  214. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +286 -0
  215. package/vendor/abseil-cpp/absl/container/node_hash_set.h +500 -0
  216. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +143 -0
  217. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +114 -0
  218. package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +96 -0
  219. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +229 -0
  220. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +230 -0
  221. package/vendor/abseil-cpp/absl/copts/configure_copts.bzl +82 -0
  222. package/vendor/abseil-cpp/absl/copts/copts.py +191 -0
  223. package/vendor/abseil-cpp/absl/copts/generate_copts.py +109 -0
  224. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +210 -0
  225. package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +176 -0
  226. package/vendor/abseil-cpp/absl/crc/crc32c.cc +99 -0
  227. package/vendor/abseil-cpp/absl/crc/crc32c.h +183 -0
  228. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +183 -0
  229. package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +194 -0
  230. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  231. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  232. package/vendor/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  233. package/vendor/abseil-cpp/absl/crc/internal/crc.h +91 -0
  234. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  235. package/vendor/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  236. package/vendor/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  237. package/vendor/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  238. package/vendor/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  239. package/vendor/abseil-cpp/absl/crc/internal/crc_cord_state_test.cc +124 -0
  240. package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  241. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  242. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  243. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_test.cc +169 -0
  244. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  245. package/vendor/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  246. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  247. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  248. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  249. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_memcpy_test.cc +88 -0
  250. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +322 -0
  251. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +294 -0
  252. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +389 -0
  253. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.h +121 -0
  254. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler_test.cc +165 -0
  255. package/vendor/abseil-cpp/absl/debugging/internal/address_is_readable.cc +96 -0
  256. package/vendor/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  257. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +1988 -0
  258. package/vendor/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  259. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +243 -0
  260. package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +386 -0
  261. package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +139 -0
  262. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +317 -0
  263. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +64 -0
  264. package/vendor/abseil-cpp/absl/debugging/internal/stack_consumption.cc +185 -0
  265. package/vendor/abseil-cpp/absl/debugging/internal/stack_consumption.h +50 -0
  266. package/vendor/abseil-cpp/absl/debugging/internal/stack_consumption_test.cc +50 -0
  267. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +206 -0
  268. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +139 -0
  269. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +88 -0
  270. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  271. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  272. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +258 -0
  273. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +191 -0
  274. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  275. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +94 -0
  276. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +394 -0
  277. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +153 -0
  278. package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +205 -0
  279. package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  280. package/vendor/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  281. package/vendor/abseil-cpp/absl/debugging/leak_check.h +150 -0
  282. package/vendor/abseil-cpp/absl/debugging/leak_check_fail_test.cc +41 -0
  283. package/vendor/abseil-cpp/absl/debugging/leak_check_test.cc +41 -0
  284. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +142 -0
  285. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  286. package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +55 -0
  287. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +47 -0
  288. package/vendor/abseil-cpp/absl/debugging/symbolize.cc +43 -0
  289. package/vendor/abseil-cpp/absl/debugging/symbolize.h +99 -0
  290. package/vendor/abseil-cpp/absl/debugging/symbolize_darwin.inc +102 -0
  291. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +1637 -0
  292. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  293. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +612 -0
  294. package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  295. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +82 -0
  296. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +583 -0
  297. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +471 -0
  298. package/vendor/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  299. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  300. package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +231 -0
  301. package/vendor/abseil-cpp/absl/flags/config.h +68 -0
  302. package/vendor/abseil-cpp/absl/flags/config_test.cc +61 -0
  303. package/vendor/abseil-cpp/absl/flags/declare.h +73 -0
  304. package/vendor/abseil-cpp/absl/flags/flag.cc +38 -0
  305. package/vendor/abseil-cpp/absl/flags/flag.h +310 -0
  306. package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +251 -0
  307. package/vendor/abseil-cpp/absl/flags/flag_benchmark.lds +13 -0
  308. package/vendor/abseil-cpp/absl/flags/flag_test.cc +1166 -0
  309. package/vendor/abseil-cpp/absl/flags/flag_test_defs.cc +24 -0
  310. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.cc +26 -0
  311. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  312. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  313. package/vendor/abseil-cpp/absl/flags/internal/flag.h +800 -0
  314. package/vendor/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  315. package/vendor/abseil-cpp/absl/flags/internal/parse.h +63 -0
  316. package/vendor/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  317. package/vendor/abseil-cpp/absl/flags/internal/path_util_test.cc +46 -0
  318. package/vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  319. package/vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  320. package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  321. package/vendor/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  322. package/vendor/abseil-cpp/absl/flags/internal/program_name_test.cc +61 -0
  323. package/vendor/abseil-cpp/absl/flags/internal/registry.h +97 -0
  324. package/vendor/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  325. package/vendor/abseil-cpp/absl/flags/internal/sequence_lock_test.cc +169 -0
  326. package/vendor/abseil-cpp/absl/flags/internal/usage.cc +526 -0
  327. package/vendor/abseil-cpp/absl/flags/internal/usage.h +104 -0
  328. package/vendor/abseil-cpp/absl/flags/internal/usage_test.cc +504 -0
  329. package/vendor/abseil-cpp/absl/flags/marshalling.cc +241 -0
  330. package/vendor/abseil-cpp/absl/flags/marshalling.h +356 -0
  331. package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +1070 -0
  332. package/vendor/abseil-cpp/absl/flags/parse.cc +890 -0
  333. package/vendor/abseil-cpp/absl/flags/parse.h +60 -0
  334. package/vendor/abseil-cpp/absl/flags/parse_test.cc +1004 -0
  335. package/vendor/abseil-cpp/absl/flags/reflection.cc +354 -0
  336. package/vendor/abseil-cpp/absl/flags/reflection.h +90 -0
  337. package/vendor/abseil-cpp/absl/flags/reflection_test.cc +265 -0
  338. package/vendor/abseil-cpp/absl/flags/usage.cc +65 -0
  339. package/vendor/abseil-cpp/absl/flags/usage.h +43 -0
  340. package/vendor/abseil-cpp/absl/flags/usage_config.cc +165 -0
  341. package/vendor/abseil-cpp/absl/flags/usage_config.h +135 -0
  342. package/vendor/abseil-cpp/absl/flags/usage_config_test.cc +205 -0
  343. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +128 -0
  344. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +109 -0
  345. package/vendor/abseil-cpp/absl/functional/any_invocable.h +316 -0
  346. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +1719 -0
  347. package/vendor/abseil-cpp/absl/functional/bind_front.h +193 -0
  348. package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +231 -0
  349. package/vendor/abseil-cpp/absl/functional/function_ref.h +143 -0
  350. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +258 -0
  351. package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +176 -0
  352. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
  353. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  354. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  355. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +176 -0
  356. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +160 -0
  357. package/vendor/abseil-cpp/absl/hash/hash.h +421 -0
  358. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +323 -0
  359. package/vendor/abseil-cpp/absl/hash/hash_test.cc +1277 -0
  360. package/vendor/abseil-cpp/absl/hash/hash_testing.h +378 -0
  361. package/vendor/abseil-cpp/absl/hash/internal/city.cc +349 -0
  362. package/vendor/abseil-cpp/absl/hash/internal/city.h +78 -0
  363. package/vendor/abseil-cpp/absl/hash/internal/city_test.cc +597 -0
  364. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +69 -0
  365. package/vendor/abseil-cpp/absl/hash/internal/hash.h +1305 -0
  366. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +112 -0
  367. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  368. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +532 -0
  369. package/vendor/abseil-cpp/absl/hash/internal/print_hash_of.cc +23 -0
  370. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +266 -0
  371. package/vendor/abseil-cpp/absl/log/BUILD.bazel +596 -0
  372. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +1042 -0
  373. package/vendor/abseil-cpp/absl/log/absl_check.h +105 -0
  374. package/vendor/abseil-cpp/absl/log/absl_check_test.cc +58 -0
  375. package/vendor/abseil-cpp/absl/log/absl_log.h +94 -0
  376. package/vendor/abseil-cpp/absl/log/absl_log_basic_test.cc +21 -0
  377. package/vendor/abseil-cpp/absl/log/check.h +183 -0
  378. package/vendor/abseil-cpp/absl/log/check_test.cc +58 -0
  379. package/vendor/abseil-cpp/absl/log/check_test_impl.h +528 -0
  380. package/vendor/abseil-cpp/absl/log/die_if_null.cc +32 -0
  381. package/vendor/abseil-cpp/absl/log/die_if_null.h +76 -0
  382. package/vendor/abseil-cpp/absl/log/die_if_null_test.cc +107 -0
  383. package/vendor/abseil-cpp/absl/log/flags.cc +112 -0
  384. package/vendor/abseil-cpp/absl/log/flags.h +43 -0
  385. package/vendor/abseil-cpp/absl/log/flags_test.cc +184 -0
  386. package/vendor/abseil-cpp/absl/log/globals.cc +148 -0
  387. package/vendor/abseil-cpp/absl/log/globals.h +165 -0
  388. package/vendor/abseil-cpp/absl/log/globals_test.cc +91 -0
  389. package/vendor/abseil-cpp/absl/log/initialize.cc +34 -0
  390. package/vendor/abseil-cpp/absl/log/initialize.h +45 -0
  391. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +383 -0
  392. package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +47 -0
  393. package/vendor/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  394. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +118 -0
  395. package/vendor/abseil-cpp/absl/log/internal/check_op.h +392 -0
  396. package/vendor/abseil-cpp/absl/log/internal/conditions.cc +83 -0
  397. package/vendor/abseil-cpp/absl/log/internal/conditions.h +222 -0
  398. package/vendor/abseil-cpp/absl/log/internal/config.h +45 -0
  399. package/vendor/abseil-cpp/absl/log/internal/flags.h +53 -0
  400. package/vendor/abseil-cpp/absl/log/internal/globals.cc +125 -0
  401. package/vendor/abseil-cpp/absl/log/internal/globals.h +101 -0
  402. package/vendor/abseil-cpp/absl/log/internal/log_format.cc +203 -0
  403. package/vendor/abseil-cpp/absl/log/internal/log_format.h +78 -0
  404. package/vendor/abseil-cpp/absl/log/internal/log_impl.h +212 -0
  405. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +618 -0
  406. package/vendor/abseil-cpp/absl/log/internal/log_message.h +355 -0
  407. package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +296 -0
  408. package/vendor/abseil-cpp/absl/log/internal/log_sink_set.h +54 -0
  409. package/vendor/abseil-cpp/absl/log/internal/nullguard.cc +35 -0
  410. package/vendor/abseil-cpp/absl/log/internal/nullguard.h +88 -0
  411. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +134 -0
  412. package/vendor/abseil-cpp/absl/log/internal/proto.cc +220 -0
  413. package/vendor/abseil-cpp/absl/log/internal/proto.h +288 -0
  414. package/vendor/abseil-cpp/absl/log/internal/stderr_log_sink_test.cc +105 -0
  415. package/vendor/abseil-cpp/absl/log/internal/strip.h +71 -0
  416. package/vendor/abseil-cpp/absl/log/internal/structured.h +58 -0
  417. package/vendor/abseil-cpp/absl/log/internal/test_actions.cc +75 -0
  418. package/vendor/abseil-cpp/absl/log/internal/test_actions.h +90 -0
  419. package/vendor/abseil-cpp/absl/log/internal/test_helpers.cc +82 -0
  420. package/vendor/abseil-cpp/absl/log/internal/test_helpers.h +71 -0
  421. package/vendor/abseil-cpp/absl/log/internal/test_matchers.cc +217 -0
  422. package/vendor/abseil-cpp/absl/log/internal/test_matchers.h +94 -0
  423. package/vendor/abseil-cpp/absl/log/internal/voidify.h +44 -0
  424. package/vendor/abseil-cpp/absl/log/log.h +308 -0
  425. package/vendor/abseil-cpp/absl/log/log_basic_test.cc +21 -0
  426. package/vendor/abseil-cpp/absl/log/log_basic_test_impl.h +455 -0
  427. package/vendor/abseil-cpp/absl/log/log_benchmark.cc +97 -0
  428. package/vendor/abseil-cpp/absl/log/log_entry.cc +29 -0
  429. package/vendor/abseil-cpp/absl/log/log_entry.h +220 -0
  430. package/vendor/abseil-cpp/absl/log/log_entry_test.cc +468 -0
  431. package/vendor/abseil-cpp/absl/log/log_format_test.cc +1872 -0
  432. package/vendor/abseil-cpp/absl/log/log_macro_hygiene_test.cc +187 -0
  433. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +233 -0
  434. package/vendor/abseil-cpp/absl/log/log_sink.cc +23 -0
  435. package/vendor/abseil-cpp/absl/log/log_sink.h +64 -0
  436. package/vendor/abseil-cpp/absl/log/log_sink_registry.h +61 -0
  437. package/vendor/abseil-cpp/absl/log/log_sink_test.cc +419 -0
  438. package/vendor/abseil-cpp/absl/log/log_streamer.h +171 -0
  439. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +365 -0
  440. package/vendor/abseil-cpp/absl/log/scoped_mock_log.cc +86 -0
  441. package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +194 -0
  442. package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +290 -0
  443. package/vendor/abseil-cpp/absl/log/stripping_test.cc +340 -0
  444. package/vendor/abseil-cpp/absl/log/structured.h +70 -0
  445. package/vendor/abseil-cpp/absl/log/structured_test.cc +63 -0
  446. package/vendor/abseil-cpp/absl/memory/BUILD.bazel +52 -0
  447. package/vendor/abseil-cpp/absl/memory/CMakeLists.txt +41 -0
  448. package/vendor/abseil-cpp/absl/memory/memory.h +278 -0
  449. package/vendor/abseil-cpp/absl/memory/memory_test.cc +222 -0
  450. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +50 -0
  451. package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +53 -0
  452. package/vendor/abseil-cpp/absl/meta/type_traits.h +889 -0
  453. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1448 -0
  454. package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +127 -0
  455. package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +99 -0
  456. package/vendor/abseil-cpp/absl/numeric/bits.h +177 -0
  457. package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +73 -0
  458. package/vendor/abseil-cpp/absl/numeric/bits_test.cc +573 -0
  459. package/vendor/abseil-cpp/absl/numeric/int128.cc +387 -0
  460. package/vendor/abseil-cpp/absl/numeric/int128.h +1165 -0
  461. package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +282 -0
  462. package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +296 -0
  463. package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +311 -0
  464. package/vendor/abseil-cpp/absl/numeric/int128_stream_test.cc +1393 -0
  465. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +1261 -0
  466. package/vendor/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  467. package/vendor/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  468. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +129 -0
  469. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +93 -0
  470. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  471. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  472. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased_test.cc +203 -0
  473. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler.cc +53 -0
  474. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler.h +211 -0
  475. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler_benchmark.cc +79 -0
  476. package/vendor/abseil-cpp/absl/profiling/internal/periodic_sampler_test.cc +177 -0
  477. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +253 -0
  478. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +184 -0
  479. package/vendor/abseil-cpp/absl/random/BUILD.bazel +517 -0
  480. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +1216 -0
  481. package/vendor/abseil-cpp/absl/random/benchmarks.cc +383 -0
  482. package/vendor/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  483. package/vendor/abseil-cpp/absl/random/bernoulli_distribution_test.cc +217 -0
  484. package/vendor/abseil-cpp/absl/random/beta_distribution.h +427 -0
  485. package/vendor/abseil-cpp/absl/random/beta_distribution_test.cc +620 -0
  486. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +185 -0
  487. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +102 -0
  488. package/vendor/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  489. package/vendor/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  490. package/vendor/abseil-cpp/absl/random/discrete_distribution_test.cc +251 -0
  491. package/vendor/abseil-cpp/absl/random/distributions.h +452 -0
  492. package/vendor/abseil-cpp/absl/random/distributions_test.cc +466 -0
  493. package/vendor/abseil-cpp/absl/random/examples_test.cc +99 -0
  494. package/vendor/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  495. package/vendor/abseil-cpp/absl/random/exponential_distribution_test.cc +428 -0
  496. package/vendor/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  497. package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  498. package/vendor/abseil-cpp/absl/random/gaussian_distribution_test.cc +563 -0
  499. package/vendor/abseil-cpp/absl/random/generators_test.cc +185 -0
  500. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +753 -0
  501. package/vendor/abseil-cpp/absl/random/internal/chi_square.cc +233 -0
  502. package/vendor/abseil-cpp/absl/random/internal/chi_square.h +89 -0
  503. package/vendor/abseil-cpp/absl/random/internal/chi_square_test.cc +365 -0
  504. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
  505. package/vendor/abseil-cpp/absl/random/internal/distribution_test_util.cc +418 -0
  506. package/vendor/abseil-cpp/absl/random/internal/distribution_test_util.h +113 -0
  507. package/vendor/abseil-cpp/absl/random/internal/distribution_test_util_test.cc +193 -0
  508. package/vendor/abseil-cpp/absl/random/internal/explicit_seed_seq.h +92 -0
  509. package/vendor/abseil-cpp/absl/random/internal/explicit_seed_seq_test.cc +237 -0
  510. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +270 -0
  511. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits_test.cc +336 -0
  512. package/vendor/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  513. package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +97 -0
  514. package/vendor/abseil-cpp/absl/random/internal/gaussian_distribution_gentables.cc +143 -0
  515. package/vendor/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  516. package/vendor/abseil-cpp/absl/random/internal/generate_real_test.cc +496 -0
  517. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  518. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +372 -0
  519. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +135 -0
  520. package/vendor/abseil-cpp/absl/random/internal/mock_overload_set.h +100 -0
  521. package/vendor/abseil-cpp/absl/random/internal/nanobenchmark.cc +804 -0
  522. package/vendor/abseil-cpp/absl/random/internal/nanobenchmark.h +172 -0
  523. package/vendor/abseil-cpp/absl/random/internal/nanobenchmark_test.cc +77 -0
  524. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
  525. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +227 -0
  526. package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
  527. package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +638 -0
  528. package/vendor/abseil-cpp/absl/random/internal/platform.h +171 -0
  529. package/vendor/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  530. package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  531. package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +182 -0
  532. package/vendor/abseil-cpp/absl/random/internal/randen.cc +91 -0
  533. package/vendor/abseil-cpp/absl/random/internal/randen.h +96 -0
  534. package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +174 -0
  535. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
  536. package/vendor/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  537. package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
  538. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +656 -0
  539. package/vendor/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  540. package/vendor/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  541. package/vendor/abseil-cpp/absl/random/internal/randen_hwaes_test.cc +99 -0
  542. package/vendor/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  543. package/vendor/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  544. package/vendor/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  545. package/vendor/abseil-cpp/absl/random/internal/randen_slow_test.cc +61 -0
  546. package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +75 -0
  547. package/vendor/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  548. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
  549. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq_test.cc +168 -0
  550. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  551. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  552. package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +202 -0
  553. package/vendor/abseil-cpp/absl/random/internal/sequence_urbg.h +60 -0
  554. package/vendor/abseil-cpp/absl/random/internal/traits.h +149 -0
  555. package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +126 -0
  556. package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  557. package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +279 -0
  558. package/vendor/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
  559. package/vendor/abseil-cpp/absl/random/internal/wide_multiply_test.cc +119 -0
  560. package/vendor/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
  561. package/vendor/abseil-cpp/absl/random/log_uniform_int_distribution_test.cc +280 -0
  562. package/vendor/abseil-cpp/absl/random/mock_distributions.h +266 -0
  563. package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +72 -0
  564. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +240 -0
  565. package/vendor/abseil-cpp/absl/random/mocking_bit_gen_test.cc +394 -0
  566. package/vendor/abseil-cpp/absl/random/poisson_distribution.h +261 -0
  567. package/vendor/abseil-cpp/absl/random/poisson_distribution_test.cc +573 -0
  568. package/vendor/abseil-cpp/absl/random/random.h +189 -0
  569. package/vendor/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  570. package/vendor/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  571. package/vendor/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  572. package/vendor/abseil-cpp/absl/random/seed_sequences.h +111 -0
  573. package/vendor/abseil-cpp/absl/random/seed_sequences_test.cc +126 -0
  574. package/vendor/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  575. package/vendor/abseil-cpp/absl/random/uniform_int_distribution_test.cc +260 -0
  576. package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  577. package/vendor/abseil-cpp/absl/random/uniform_real_distribution_test.cc +395 -0
  578. package/vendor/abseil-cpp/absl/random/zipf_distribution.h +272 -0
  579. package/vendor/abseil-cpp/absl/random/zipf_distribution_test.cc +427 -0
  580. package/vendor/abseil-cpp/absl/status/BUILD.bazel +109 -0
  581. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
  582. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +87 -0
  583. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
  584. package/vendor/abseil-cpp/absl/status/status.cc +623 -0
  585. package/vendor/abseil-cpp/absl/status/status.h +892 -0
  586. package/vendor/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  587. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  588. package/vendor/abseil-cpp/absl/status/status_test.cc +509 -0
  589. package/vendor/abseil-cpp/absl/status/statusor.cc +103 -0
  590. package/vendor/abseil-cpp/absl/status/statusor.h +776 -0
  591. package/vendor/abseil-cpp/absl/status/statusor_test.cc +1847 -0
  592. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +1319 -0
  593. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +1119 -0
  594. package/vendor/abseil-cpp/absl/strings/ascii.cc +200 -0
  595. package/vendor/abseil-cpp/absl/strings/ascii.h +242 -0
  596. package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +120 -0
  597. package/vendor/abseil-cpp/absl/strings/ascii_test.cc +357 -0
  598. package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +193 -0
  599. package/vendor/abseil-cpp/absl/strings/charconv.cc +1422 -0
  600. package/vendor/abseil-cpp/absl/strings/charconv.h +120 -0
  601. package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +204 -0
  602. package/vendor/abseil-cpp/absl/strings/charconv_test.cc +782 -0
  603. package/vendor/abseil-cpp/absl/strings/cord.cc +1380 -0
  604. package/vendor/abseil-cpp/absl/strings/cord.h +1633 -0
  605. package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  606. package/vendor/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  607. package/vendor/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  608. package/vendor/abseil-cpp/absl/strings/cord_buffer.h +575 -0
  609. package/vendor/abseil-cpp/absl/strings/cord_buffer_test.cc +320 -0
  610. package/vendor/abseil-cpp/absl/strings/cord_ring_reader_test.cc +180 -0
  611. package/vendor/abseil-cpp/absl/strings/cord_ring_test.cc +1454 -0
  612. package/vendor/abseil-cpp/absl/strings/cord_test.cc +3125 -0
  613. package/vendor/abseil-cpp/absl/strings/cord_test_helpers.h +122 -0
  614. package/vendor/abseil-cpp/absl/strings/cordz_test.cc +466 -0
  615. package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +151 -0
  616. package/vendor/abseil-cpp/absl/strings/escaping.cc +960 -0
  617. package/vendor/abseil-cpp/absl/strings/escaping.h +169 -0
  618. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +94 -0
  619. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +706 -0
  620. package/vendor/abseil-cpp/absl/strings/internal/char_map.h +158 -0
  621. package/vendor/abseil-cpp/absl/strings/internal/char_map_benchmark.cc +61 -0
  622. package/vendor/abseil-cpp/absl/strings/internal/char_map_test.cc +172 -0
  623. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
  624. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
  625. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +260 -0
  626. package/vendor/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  627. package/vendor/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  628. package/vendor/abseil-cpp/absl/strings/internal/charconv_parse_test.cc +357 -0
  629. package/vendor/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  630. package/vendor/abseil-cpp/absl/strings/internal/cord_data_edge_test.cc +130 -0
  631. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.cc +77 -0
  632. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +915 -0
  633. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1232 -0
  634. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.h +936 -0
  635. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
  636. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
  637. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator_test.cc +346 -0
  638. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
  639. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
  640. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_reader_test.cc +293 -0
  641. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +1568 -0
  642. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +62 -0
  643. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  644. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  645. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  646. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_crc_test.cc +130 -0
  647. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_flat.h +187 -0
  648. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +773 -0
  649. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  650. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  651. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_test_util.h +205 -0
  652. package/vendor/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  653. package/vendor/abseil-cpp/absl/strings/internal/cordz_functions.h +77 -0
  654. package/vendor/abseil-cpp/absl/strings/internal/cordz_functions_test.cc +149 -0
  655. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  656. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  657. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle_test.cc +265 -0
  658. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +421 -0
  659. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  660. package/vendor/abseil-cpp/absl/strings/internal/cordz_info_statistics_test.cc +557 -0
  661. package/vendor/abseil-cpp/absl/strings/internal/cordz_info_test.cc +342 -0
  662. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token.cc +64 -0
  663. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token.h +97 -0
  664. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +208 -0
  665. package/vendor/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
  666. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  667. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_scope_test.cc +49 -0
  668. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
  669. package/vendor/abseil-cpp/absl/strings/internal/cordz_update_tracker_test.cc +147 -0
  670. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  671. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  672. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_test.cc +99 -0
  673. package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +183 -0
  674. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +56 -0
  675. package/vendor/abseil-cpp/absl/strings/internal/escaping_test_common.h +133 -0
  676. package/vendor/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  677. package/vendor/abseil-cpp/absl/strings/internal/memutil.cc +115 -0
  678. package/vendor/abseil-cpp/absl/strings/internal/memutil.h +148 -0
  679. package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +323 -0
  680. package/vendor/abseil-cpp/absl/strings/internal/memutil_test.cc +179 -0
  681. package/vendor/abseil-cpp/absl/strings/internal/numbers_test_common.h +184 -0
  682. package/vendor/abseil-cpp/absl/strings/internal/ostringstream.cc +43 -0
  683. package/vendor/abseil-cpp/absl/strings/internal/ostringstream.h +114 -0
  684. package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +106 -0
  685. package/vendor/abseil-cpp/absl/strings/internal/ostringstream_test.cc +131 -0
  686. package/vendor/abseil-cpp/absl/strings/internal/pow10_helper.cc +122 -0
  687. package/vendor/abseil-cpp/absl/strings/internal/pow10_helper.h +40 -0
  688. package/vendor/abseil-cpp/absl/strings/internal/pow10_helper_test.cc +122 -0
  689. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +119 -0
  690. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +133 -0
  691. package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  692. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +555 -0
  693. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +623 -0
  694. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg_test.cc +130 -0
  695. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.cc +259 -0
  696. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +249 -0
  697. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind_test.cc +157 -0
  698. package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +100 -0
  699. package/vendor/abseil-cpp/absl/strings/internal/str_format/checker_test.cc +176 -0
  700. package/vendor/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  701. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1257 -0
  702. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +75 -0
  703. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.h +450 -0
  704. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +109 -0
  705. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1457 -0
  706. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +37 -0
  707. package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  708. package/vendor/abseil-cpp/absl/strings/internal/str_format/output.h +97 -0
  709. package/vendor/abseil-cpp/absl/strings/internal/str_format/output_test.cc +79 -0
  710. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.cc +140 -0
  711. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +268 -0
  712. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser_test.cc +438 -0
  713. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +317 -0
  714. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +431 -0
  715. package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +72 -0
  716. package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +60 -0
  717. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  718. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  719. package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
  720. package/vendor/abseil-cpp/absl/strings/internal/utf8.h +50 -0
  721. package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +66 -0
  722. package/vendor/abseil-cpp/absl/strings/match.cc +43 -0
  723. package/vendor/abseil-cpp/absl/strings/match.h +100 -0
  724. package/vendor/abseil-cpp/absl/strings/match_test.cc +127 -0
  725. package/vendor/abseil-cpp/absl/strings/numbers.cc +1096 -0
  726. package/vendor/abseil-cpp/absl/strings/numbers.h +303 -0
  727. package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +286 -0
  728. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +1722 -0
  729. package/vendor/abseil-cpp/absl/strings/str_cat.cc +249 -0
  730. package/vendor/abseil-cpp/absl/strings/str_cat.h +462 -0
  731. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +187 -0
  732. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +665 -0
  733. package/vendor/abseil-cpp/absl/strings/str_format.h +874 -0
  734. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +1212 -0
  735. package/vendor/abseil-cpp/absl/strings/str_join.h +287 -0
  736. package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +97 -0
  737. package/vendor/abseil-cpp/absl/strings/str_join_test.cc +608 -0
  738. package/vendor/abseil-cpp/absl/strings/str_replace.cc +82 -0
  739. package/vendor/abseil-cpp/absl/strings/str_replace.h +219 -0
  740. package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +122 -0
  741. package/vendor/abseil-cpp/absl/strings/str_replace_test.cc +341 -0
  742. package/vendor/abseil-cpp/absl/strings/str_split.cc +139 -0
  743. package/vendor/abseil-cpp/absl/strings/str_split.h +547 -0
  744. package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +180 -0
  745. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +981 -0
  746. package/vendor/abseil-cpp/absl/strings/string_view.cc +219 -0
  747. package/vendor/abseil-cpp/absl/strings/string_view.h +704 -0
  748. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +381 -0
  749. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1308 -0
  750. package/vendor/abseil-cpp/absl/strings/strip.h +93 -0
  751. package/vendor/abseil-cpp/absl/strings/strip_test.cc +198 -0
  752. package/vendor/abseil-cpp/absl/strings/substitute.cc +174 -0
  753. package/vendor/abseil-cpp/absl/strings/substitute.h +755 -0
  754. package/vendor/abseil-cpp/absl/strings/substitute_test.cc +285 -0
  755. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +333 -0
  756. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +235 -0
  757. package/vendor/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  758. package/vendor/abseil-cpp/absl/synchronization/barrier.h +79 -0
  759. package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +75 -0
  760. package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +67 -0
  761. package/vendor/abseil-cpp/absl/synchronization/blocking_counter.h +101 -0
  762. package/vendor/abseil-cpp/absl/synchronization/blocking_counter_benchmark.cc +83 -0
  763. package/vendor/abseil-cpp/absl/synchronization/blocking_counter_test.cc +80 -0
  764. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +143 -0
  765. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +56 -0
  766. package/vendor/abseil-cpp/absl/synchronization/internal/futex.h +157 -0
  767. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +704 -0
  768. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  769. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +44 -0
  770. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +464 -0
  771. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +170 -0
  772. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +102 -0
  773. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +110 -0
  774. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem_test.cc +190 -0
  775. package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +96 -0
  776. package/vendor/abseil-cpp/absl/synchronization/internal/waiter.cc +403 -0
  777. package/vendor/abseil-cpp/absl/synchronization/internal/waiter.h +161 -0
  778. package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +181 -0
  779. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2835 -0
  780. package/vendor/abseil-cpp/absl/synchronization/mutex.h +1129 -0
  781. package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +310 -0
  782. package/vendor/abseil-cpp/absl/synchronization/mutex_method_pointer_test.cc +138 -0
  783. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +1733 -0
  784. package/vendor/abseil-cpp/absl/synchronization/notification.cc +77 -0
  785. package/vendor/abseil-cpp/absl/synchronization/notification.h +123 -0
  786. package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +133 -0
  787. package/vendor/abseil-cpp/absl/time/BUILD.bazel +148 -0
  788. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +140 -0
  789. package/vendor/abseil-cpp/absl/time/civil_time.cc +199 -0
  790. package/vendor/abseil-cpp/absl/time/civil_time.h +563 -0
  791. package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +127 -0
  792. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +1243 -0
  793. package/vendor/abseil-cpp/absl/time/clock.cc +591 -0
  794. package/vendor/abseil-cpp/absl/time/clock.h +74 -0
  795. package/vendor/abseil-cpp/absl/time/clock_benchmark.cc +74 -0
  796. package/vendor/abseil-cpp/absl/time/clock_test.cc +122 -0
  797. package/vendor/abseil-cpp/absl/time/duration.cc +955 -0
  798. package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +444 -0
  799. package/vendor/abseil-cpp/absl/time/duration_test.cc +1856 -0
  800. package/vendor/abseil-cpp/absl/time/flag_test.cc +147 -0
  801. package/vendor/abseil-cpp/absl/time/format.cc +161 -0
  802. package/vendor/abseil-cpp/absl/time/format_benchmark.cc +64 -0
  803. package/vendor/abseil-cpp/absl/time/format_test.cc +441 -0
  804. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +159 -0
  805. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  806. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +632 -0
  807. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +459 -0
  808. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  809. package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +1033 -0
  810. package/vendor/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  811. package/vendor/abseil-cpp/absl/time/internal/cctz/src/civil_time_test.cc +1066 -0
  812. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  813. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  814. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
  815. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +1688 -0
  816. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  817. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +77 -0
  818. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
  819. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  820. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +1048 -0
  821. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
  822. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +315 -0
  823. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  824. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +237 -0
  825. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1504 -0
  826. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  827. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  828. package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  829. package/vendor/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
  830. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/README.zoneinfo +38 -0
  831. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -0
  832. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Abidjan +0 -0
  833. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Accra +0 -0
  834. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Addis_Ababa +0 -0
  835. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Algiers +0 -0
  836. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmara +0 -0
  837. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Asmera +0 -0
  838. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bamako +0 -0
  839. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bangui +0 -0
  840. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Banjul +0 -0
  841. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bissau +0 -0
  842. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Blantyre +0 -0
  843. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Brazzaville +0 -0
  844. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Bujumbura +0 -0
  845. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Cairo +0 -0
  846. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Casablanca +0 -0
  847. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ceuta +0 -0
  848. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Conakry +0 -0
  849. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dakar +0 -0
  850. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Dar_es_Salaam +0 -0
  851. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Djibouti +0 -0
  852. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Douala +0 -0
  853. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/El_Aaiun +0 -0
  854. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Freetown +0 -0
  855. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Gaborone +0 -0
  856. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Harare +0 -0
  857. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Johannesburg +0 -0
  858. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Juba +0 -0
  859. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kampala +0 -0
  860. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Khartoum +0 -0
  861. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kigali +0 -0
  862. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Kinshasa +0 -0
  863. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lagos +0 -0
  864. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Libreville +0 -0
  865. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lome +0 -0
  866. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Luanda +0 -0
  867. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lubumbashi +0 -0
  868. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Lusaka +0 -0
  869. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Malabo +0 -0
  870. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maputo +0 -0
  871. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Maseru +0 -0
  872. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mbabane +0 -0
  873. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Mogadishu +0 -0
  874. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Monrovia +0 -0
  875. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nairobi +0 -0
  876. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ndjamena +0 -0
  877. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Niamey +0 -0
  878. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Nouakchott +0 -0
  879. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Ouagadougou +0 -0
  880. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Porto-Novo +0 -0
  881. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Sao_Tome +0 -0
  882. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Timbuktu +0 -0
  883. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tripoli +0 -0
  884. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Tunis +0 -0
  885. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Africa/Windhoek +0 -0
  886. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Adak +0 -0
  887. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anchorage +0 -0
  888. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Anguilla +0 -0
  889. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Antigua +0 -0
  890. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Araguaina +0 -0
  891. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Buenos_Aires +0 -0
  892. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Catamarca +0 -0
  893. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/ComodRivadavia +0 -0
  894. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Cordoba +0 -0
  895. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Jujuy +0 -0
  896. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/La_Rioja +0 -0
  897. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Mendoza +0 -0
  898. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Rio_Gallegos +0 -0
  899. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Salta +0 -0
  900. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Juan +0 -0
  901. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/San_Luis +0 -0
  902. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Tucuman +0 -0
  903. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Argentina/Ushuaia +0 -0
  904. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Aruba +0 -0
  905. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Asuncion +0 -0
  906. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atikokan +0 -0
  907. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Atka +0 -0
  908. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia +0 -0
  909. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bahia_Banderas +0 -0
  910. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Barbados +0 -0
  911. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belem +0 -0
  912. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Belize +0 -0
  913. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Blanc-Sablon +0 -0
  914. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boa_Vista +0 -0
  915. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Bogota +0 -0
  916. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Boise +0 -0
  917. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Buenos_Aires +0 -0
  918. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cambridge_Bay +0 -0
  919. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Campo_Grande +0 -0
  920. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cancun +0 -0
  921. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Caracas +0 -0
  922. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Catamarca +0 -0
  923. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayenne +0 -0
  924. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cayman +0 -0
  925. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chicago +0 -0
  926. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Chihuahua +0 -0
  927. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ciudad_Juarez +0 -0
  928. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coral_Harbour +0 -0
  929. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cordoba +0 -0
  930. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Costa_Rica +0 -0
  931. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Creston +0 -0
  932. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Cuiaba +0 -0
  933. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Curacao +0 -0
  934. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Danmarkshavn +0 -0
  935. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson +0 -0
  936. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dawson_Creek +0 -0
  937. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Denver +0 -0
  938. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Detroit +0 -0
  939. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Dominica +0 -0
  940. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Edmonton +0 -0
  941. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Eirunepe +0 -0
  942. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/El_Salvador +0 -0
  943. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
  944. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Nelson +0 -0
  945. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fort_Wayne +0 -0
  946. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Fortaleza +0 -0
  947. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Glace_Bay +0 -0
  948. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Godthab +0 -0
  949. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Goose_Bay +0 -0
  950. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grand_Turk +0 -0
  951. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Grenada +0 -0
  952. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guadeloupe +0 -0
  953. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guatemala +0 -0
  954. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guayaquil +0 -0
  955. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Guyana +0 -0
  956. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Halifax +0 -0
  957. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Havana +0 -0
  958. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Hermosillo +0 -0
  959. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Indianapolis +0 -0
  960. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Knox +0 -0
  961. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Marengo +0 -0
  962. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Petersburg +0 -0
  963. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Tell_City +0 -0
  964. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vevay +0 -0
  965. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Vincennes +0 -0
  966. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indiana/Winamac +0 -0
  967. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Indianapolis +0 -0
  968. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Inuvik +0 -0
  969. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Iqaluit +0 -0
  970. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jamaica +0 -0
  971. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Jujuy +0 -0
  972. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Juneau +0 -0
  973. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Louisville +0 -0
  974. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kentucky/Monticello +0 -0
  975. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Knox_IN +0 -0
  976. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Kralendijk +0 -0
  977. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/La_Paz +0 -0
  978. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lima +0 -0
  979. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Los_Angeles +0 -0
  980. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Louisville +0 -0
  981. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Lower_Princes +0 -0
  982. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Maceio +0 -0
  983. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Managua +0 -0
  984. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Manaus +0 -0
  985. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Marigot +0 -0
  986. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Martinique +0 -0
  987. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Matamoros +0 -0
  988. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mazatlan +0 -0
  989. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mendoza +0 -0
  990. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Menominee +0 -0
  991. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Merida +0 -0
  992. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Metlakatla +0 -0
  993. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Mexico_City +0 -0
  994. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Miquelon +0 -0
  995. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Moncton +0 -0
  996. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Monterrey +0 -0
  997. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montevideo +0 -0
  998. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montreal +0 -0
  999. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Montserrat +0 -0
  1000. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nassau +0 -0
  1001. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/New_York +0 -0
  1002. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nipigon +0 -0
  1003. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nome +0 -0
  1004. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Noronha +0 -0
  1005. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Beulah +0 -0
  1006. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/Center +0 -0
  1007. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/North_Dakota/New_Salem +0 -0
  1008. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Nuuk +0 -0
  1009. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ojinaga +0 -0
  1010. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Panama +0 -0
  1011. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Pangnirtung +0 -0
  1012. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Paramaribo +0 -0
  1013. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Phoenix +0 -0
  1014. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port-au-Prince +0 -0
  1015. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Port_of_Spain +0 -0
  1016. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Acre +0 -0
  1017. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Porto_Velho +0 -0
  1018. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Puerto_Rico +0 -0
  1019. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Punta_Arenas +0 -0
  1020. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rainy_River +0 -0
  1021. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rankin_Inlet +0 -0
  1022. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Recife +0 -0
  1023. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Regina +0 -0
  1024. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Resolute +0 -0
  1025. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rio_Branco +0 -0
  1026. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Rosario +0 -0
  1027. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
  1028. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santarem +0 -0
  1029. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santiago +0 -0
  1030. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santo_Domingo +0 -0
  1031. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sao_Paulo +0 -0
  1032. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Scoresbysund +0 -0
  1033. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Shiprock +0 -0
  1034. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Sitka +0 -0
  1035. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Barthelemy +0 -0
  1036. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Johns +0 -0
  1037. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Kitts +0 -0
  1038. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Lucia +0 -0
  1039. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Thomas +0 -0
  1040. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/St_Vincent +0 -0
  1041. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Swift_Current +0 -0
  1042. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tegucigalpa +0 -0
  1043. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thule +0 -0
  1044. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Thunder_Bay +0 -0
  1045. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
  1046. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Toronto +0 -0
  1047. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tortola +0 -0
  1048. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  1049. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Virgin +0 -0
  1050. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Whitehorse +0 -0
  1051. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Winnipeg +0 -0
  1052. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yakutat +0 -0
  1053. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Yellowknife +0 -0
  1054. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Casey +0 -0
  1055. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Davis +0 -0
  1056. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/DumontDUrville +0 -0
  1057. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Macquarie +0 -0
  1058. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Mawson +0 -0
  1059. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/McMurdo +0 -0
  1060. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Palmer +0 -0
  1061. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Rothera +0 -0
  1062. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/South_Pole +0 -0
  1063. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Syowa +0 -0
  1064. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Troll +0 -0
  1065. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Antarctica/Vostok +0 -0
  1066. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Arctic/Longyearbyen +0 -0
  1067. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aden +0 -0
  1068. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Almaty +0 -0
  1069. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Amman +0 -0
  1070. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Anadyr +0 -0
  1071. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtau +0 -0
  1072. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Aqtobe +0 -0
  1073. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashgabat +0 -0
  1074. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ashkhabad +0 -0
  1075. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Atyrau +0 -0
  1076. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baghdad +0 -0
  1077. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bahrain +0 -0
  1078. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Baku +0 -0
  1079. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bangkok +0 -0
  1080. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Barnaul +0 -0
  1081. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Beirut +0 -0
  1082. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Bishkek +0 -0
  1083. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Brunei +0 -0
  1084. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Calcutta +0 -0
  1085. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chita +0 -0
  1086. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Choibalsan +0 -0
  1087. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chongqing +0 -0
  1088. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Chungking +0 -0
  1089. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Colombo +0 -0
  1090. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dacca +0 -0
  1091. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Damascus +0 -0
  1092. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dhaka +0 -0
  1093. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dili +0 -0
  1094. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dubai +0 -0
  1095. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Dushanbe +0 -0
  1096. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Famagusta +0 -0
  1097. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Gaza +0 -0
  1098. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Harbin +0 -0
  1099. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hebron +0 -0
  1100. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  1101. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hong_Kong +0 -0
  1102. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Hovd +0 -0
  1103. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Irkutsk +0 -0
  1104. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Istanbul +0 -0
  1105. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jakarta +0 -0
  1106. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jayapura +0 -0
  1107. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Jerusalem +0 -0
  1108. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kabul +0 -0
  1109. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kamchatka +0 -0
  1110. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Karachi +0 -0
  1111. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kashgar +0 -0
  1112. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kathmandu +0 -0
  1113. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Katmandu +0 -0
  1114. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Khandyga +0 -0
  1115. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kolkata +0 -0
  1116. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Krasnoyarsk +0 -0
  1117. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuala_Lumpur +0 -0
  1118. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuching +0 -0
  1119. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Kuwait +0 -0
  1120. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macao +0 -0
  1121. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Macau +0 -0
  1122. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Magadan +0 -0
  1123. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Makassar +0 -0
  1124. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Manila +0 -0
  1125. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Muscat +0 -0
  1126. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Nicosia +0 -0
  1127. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novokuznetsk +0 -0
  1128. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Novosibirsk +0 -0
  1129. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Omsk +0 -0
  1130. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Oral +0 -0
  1131. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  1132. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pontianak +0 -0
  1133. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Pyongyang +0 -0
  1134. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qatar +0 -0
  1135. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qostanay +0 -0
  1136. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Qyzylorda +0 -0
  1137. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Rangoon +0 -0
  1138. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Riyadh +0 -0
  1139. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  1140. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Sakhalin +0 -0
  1141. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Samarkand +0 -0
  1142. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Seoul +0 -0
  1143. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Shanghai +0 -0
  1144. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Singapore +0 -0
  1145. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Srednekolymsk +0 -0
  1146. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Taipei +0 -0
  1147. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tashkent +0 -0
  1148. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  1149. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
  1150. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tel_Aviv +0 -0
  1151. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimbu +0 -0
  1152. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Thimphu +0 -0
  1153. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tokyo +0 -0
  1154. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tomsk +0 -0
  1155. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ujung_Pandang +0 -0
  1156. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulaanbaatar +0 -0
  1157. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ulan_Bator +0 -0
  1158. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Urumqi +0 -0
  1159. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ust-Nera +0 -0
  1160. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  1161. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vladivostok +0 -0
  1162. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yakutsk +0 -0
  1163. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yangon +0 -0
  1164. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yekaterinburg +0 -0
  1165. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Yerevan +0 -0
  1166. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Azores +0 -0
  1167. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Bermuda +0 -0
  1168. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Canary +0 -0
  1169. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Cape_Verde +0 -0
  1170. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faeroe +0 -0
  1171. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Faroe +0 -0
  1172. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Jan_Mayen +0 -0
  1173. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Madeira +0 -0
  1174. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Reykjavik +0 -0
  1175. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/South_Georgia +0 -0
  1176. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/St_Helena +0 -0
  1177. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Atlantic/Stanley +0 -0
  1178. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/ACT +0 -0
  1179. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Adelaide +0 -0
  1180. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Brisbane +0 -0
  1181. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Broken_Hill +0 -0
  1182. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Canberra +0 -0
  1183. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Currie +0 -0
  1184. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Darwin +0 -0
  1185. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Eucla +0 -0
  1186. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Hobart +0 -0
  1187. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/LHI +0 -0
  1188. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lindeman +0 -0
  1189. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Lord_Howe +0 -0
  1190. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Melbourne +0 -0
  1191. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/NSW +0 -0
  1192. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/North +0 -0
  1193. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Perth +0 -0
  1194. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Queensland +0 -0
  1195. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/South +0 -0
  1196. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Sydney +0 -0
  1197. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Tasmania +0 -0
  1198. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Victoria +0 -0
  1199. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/West +0 -0
  1200. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Australia/Yancowinna +0 -0
  1201. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/Acre +0 -0
  1202. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/DeNoronha +0 -0
  1203. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/East +0 -0
  1204. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Brazil/West +0 -0
  1205. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/CET +0 -0
  1206. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/CST6CDT +0 -0
  1207. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Atlantic +0 -0
  1208. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Central +0 -0
  1209. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Eastern +0 -0
  1210. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Mountain +0 -0
  1211. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Newfoundland +0 -0
  1212. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  1213. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Saskatchewan +0 -0
  1214. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Yukon +0 -0
  1215. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/Continental +0 -0
  1216. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Chile/EasterIsland +0 -0
  1217. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Cuba +0 -0
  1218. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EET +0 -0
  1219. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EST +0 -0
  1220. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/EST5EDT +0 -0
  1221. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Egypt +0 -0
  1222. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Eire +0 -0
  1223. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT +0 -0
  1224. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+0 +0 -0
  1225. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+1 +0 -0
  1226. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+10 +0 -0
  1227. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+11 +0 -0
  1228. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+12 +0 -0
  1229. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+2 +0 -0
  1230. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+3 +0 -0
  1231. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+4 +0 -0
  1232. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+5 +0 -0
  1233. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+6 +0 -0
  1234. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+7 +0 -0
  1235. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+8 +0 -0
  1236. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT+9 +0 -0
  1237. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-0 +0 -0
  1238. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-1 +0 -0
  1239. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-10 +0 -0
  1240. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-11 +0 -0
  1241. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-12 +0 -0
  1242. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-13 +0 -0
  1243. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-14 +0 -0
  1244. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-2 +0 -0
  1245. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-3 +0 -0
  1246. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-4 +0 -0
  1247. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-5 +0 -0
  1248. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-6 +0 -0
  1249. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-7 +0 -0
  1250. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-8 +0 -0
  1251. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT-9 +0 -0
  1252. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/GMT0 +0 -0
  1253. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Greenwich +0 -0
  1254. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UCT +0 -0
  1255. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/UTC +0 -0
  1256. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Universal +0 -0
  1257. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Etc/Zulu +0 -0
  1258. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Amsterdam +0 -0
  1259. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Andorra +0 -0
  1260. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Astrakhan +0 -0
  1261. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Athens +0 -0
  1262. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belfast +0 -0
  1263. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Belgrade +0 -0
  1264. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Berlin +0 -0
  1265. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bratislava +0 -0
  1266. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Brussels +0 -0
  1267. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Bucharest +0 -0
  1268. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Budapest +0 -0
  1269. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Busingen +0 -0
  1270. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  1271. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Copenhagen +0 -0
  1272. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Dublin +0 -0
  1273. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Gibraltar +0 -0
  1274. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Guernsey +0 -0
  1275. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Helsinki +0 -0
  1276. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Isle_of_Man +0 -0
  1277. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Istanbul +0 -0
  1278. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Jersey +0 -0
  1279. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kaliningrad +0 -0
  1280. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kiev +0 -0
  1281. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kirov +0 -0
  1282. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Kyiv +0 -0
  1283. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Lisbon +0 -0
  1284. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ljubljana +0 -0
  1285. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/London +0 -0
  1286. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Luxembourg +0 -0
  1287. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Madrid +0 -0
  1288. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Malta +0 -0
  1289. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Mariehamn +0 -0
  1290. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Minsk +0 -0
  1291. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Monaco +0 -0
  1292. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Moscow +0 -0
  1293. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Nicosia +0 -0
  1294. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Oslo +0 -0
  1295. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Paris +0 -0
  1296. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Podgorica +0 -0
  1297. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Prague +0 -0
  1298. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Riga +0 -0
  1299. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Rome +0 -0
  1300. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Samara +0 -0
  1301. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/San_Marino +0 -0
  1302. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sarajevo +0 -0
  1303. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Saratov +0 -0
  1304. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Simferopol +0 -0
  1305. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Skopje +0 -0
  1306. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Sofia +0 -0
  1307. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Stockholm +0 -0
  1308. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tallinn +0 -0
  1309. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tirane +0 -0
  1310. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  1311. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Ulyanovsk +0 -0
  1312. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Uzhgorod +0 -0
  1313. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vaduz +0 -0
  1314. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vatican +0 -0
  1315. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vienna +0 -0
  1316. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Vilnius +0 -0
  1317. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Volgograd +0 -0
  1318. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Warsaw +0 -0
  1319. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zagreb +0 -0
  1320. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zaporozhye +0 -0
  1321. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Zurich +0 -0
  1322. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Factory +0 -0
  1323. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GB +0 -0
  1324. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GB-Eire +0 -0
  1325. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT +0 -0
  1326. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT+0 +0 -0
  1327. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT-0 +0 -0
  1328. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/GMT0 +0 -0
  1329. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Greenwich +0 -0
  1330. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/HST +0 -0
  1331. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Hongkong +0 -0
  1332. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iceland +0 -0
  1333. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Antananarivo +0 -0
  1334. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Chagos +0 -0
  1335. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Christmas +0 -0
  1336. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Cocos +0 -0
  1337. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Comoro +0 -0
  1338. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Kerguelen +0 -0
  1339. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mahe +0 -0
  1340. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Maldives +0 -0
  1341. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mauritius +0 -0
  1342. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Mayotte +0 -0
  1343. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Indian/Reunion +0 -0
  1344. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
  1345. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Israel +0 -0
  1346. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Jamaica +0 -0
  1347. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Japan +0 -0
  1348. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Kwajalein +0 -0
  1349. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Libya +0 -0
  1350. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MET +0 -0
  1351. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MST +0 -0
  1352. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/MST7MDT +0 -0
  1353. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
  1354. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaSur +0 -0
  1355. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/General +0 -0
  1356. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ +0 -0
  1357. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/NZ-CHAT +0 -0
  1358. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Navajo +0 -0
  1359. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/PRC +0 -0
  1360. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/PST8PDT +0 -0
  1361. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Apia +0 -0
  1362. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Auckland +0 -0
  1363. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Bougainville +0 -0
  1364. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chatham +0 -0
  1365. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Chuuk +0 -0
  1366. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Easter +0 -0
  1367. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Efate +0 -0
  1368. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Enderbury +0 -0
  1369. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fakaofo +0 -0
  1370. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Fiji +0 -0
  1371. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Funafuti +0 -0
  1372. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Galapagos +0 -0
  1373. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Gambier +0 -0
  1374. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guadalcanal +0 -0
  1375. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Guam +0 -0
  1376. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Honolulu +0 -0
  1377. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Johnston +0 -0
  1378. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kanton +0 -0
  1379. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kiritimati +0 -0
  1380. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kosrae +0 -0
  1381. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Kwajalein +0 -0
  1382. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Majuro +0 -0
  1383. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Marquesas +0 -0
  1384. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Midway +0 -0
  1385. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Nauru +0 -0
  1386. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Niue +0 -0
  1387. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Norfolk +0 -0
  1388. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Noumea +0 -0
  1389. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pago_Pago +0 -0
  1390. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Palau +0 -0
  1391. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pitcairn +0 -0
  1392. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Pohnpei +0 -0
  1393. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Ponape +0 -0
  1394. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Port_Moresby +0 -0
  1395. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Rarotonga +0 -0
  1396. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Saipan +0 -0
  1397. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Samoa +0 -0
  1398. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tahiti +0 -0
  1399. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tarawa +0 -0
  1400. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Tongatapu +0 -0
  1401. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Truk +0 -0
  1402. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wake +0 -0
  1403. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Wallis +0 -0
  1404. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Pacific/Yap +0 -0
  1405. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Poland +0 -0
  1406. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Portugal +0 -0
  1407. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/ROC +0 -0
  1408. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/ROK +0 -0
  1409. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Singapore +0 -0
  1410. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Turkey +0 -0
  1411. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/UCT +0 -0
  1412. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Alaska +0 -0
  1413. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Aleutian +0 -0
  1414. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Arizona +0 -0
  1415. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Central +0 -0
  1416. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/East-Indiana +0 -0
  1417. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Eastern +0 -0
  1418. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Hawaii +0 -0
  1419. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Indiana-Starke +0 -0
  1420. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Michigan +0 -0
  1421. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Mountain +0 -0
  1422. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Pacific +0 -0
  1423. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/US/Samoa +0 -0
  1424. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/UTC +0 -0
  1425. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Universal +0 -0
  1426. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/W-SU +0 -0
  1427. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/WET +0 -0
  1428. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Zulu +0 -0
  1429. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +274 -0
  1430. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +372 -0
  1431. package/vendor/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  1432. package/vendor/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  1433. package/vendor/abseil-cpp/absl/time/internal/test_util.cc +32 -0
  1434. package/vendor/abseil-cpp/absl/time/internal/test_util.h +33 -0
  1435. package/vendor/abseil-cpp/absl/time/time.cc +500 -0
  1436. package/vendor/abseil-cpp/absl/time/time.h +1715 -0
  1437. package/vendor/abseil-cpp/absl/time/time_benchmark.cc +321 -0
  1438. package/vendor/abseil-cpp/absl/time/time_test.cc +1290 -0
  1439. package/vendor/abseil-cpp/absl/time/time_zone_test.cc +97 -0
  1440. package/vendor/abseil-cpp/absl/types/BUILD.bazel +336 -0
  1441. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +371 -0
  1442. package/vendor/abseil-cpp/absl/types/any.h +517 -0
  1443. package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +173 -0
  1444. package/vendor/abseil-cpp/absl/types/any_test.cc +778 -0
  1445. package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +46 -0
  1446. package/vendor/abseil-cpp/absl/types/bad_any_cast.h +75 -0
  1447. package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
  1448. package/vendor/abseil-cpp/absl/types/bad_optional_access.h +78 -0
  1449. package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  1450. package/vendor/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  1451. package/vendor/abseil-cpp/absl/types/compare.h +599 -0
  1452. package/vendor/abseil-cpp/absl/types/compare_test.cc +389 -0
  1453. package/vendor/abseil-cpp/absl/types/internal/conformance_aliases.h +447 -0
  1454. package/vendor/abseil-cpp/absl/types/internal/conformance_archetype.h +978 -0
  1455. package/vendor/abseil-cpp/absl/types/internal/conformance_profile.h +933 -0
  1456. package/vendor/abseil-cpp/absl/types/internal/conformance_testing.h +1386 -0
  1457. package/vendor/abseil-cpp/absl/types/internal/conformance_testing_helpers.h +391 -0
  1458. package/vendor/abseil-cpp/absl/types/internal/conformance_testing_test.cc +1556 -0
  1459. package/vendor/abseil-cpp/absl/types/internal/optional.h +404 -0
  1460. package/vendor/abseil-cpp/absl/types/internal/parentheses.h +34 -0
  1461. package/vendor/abseil-cpp/absl/types/internal/span.h +139 -0
  1462. package/vendor/abseil-cpp/absl/types/internal/transform_args.h +246 -0
  1463. package/vendor/abseil-cpp/absl/types/internal/variant.h +1634 -0
  1464. package/vendor/abseil-cpp/absl/types/optional.h +779 -0
  1465. package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +292 -0
  1466. package/vendor/abseil-cpp/absl/types/optional_test.cc +1675 -0
  1467. package/vendor/abseil-cpp/absl/types/span.h +749 -0
  1468. package/vendor/abseil-cpp/absl/types/span_test.cc +848 -0
  1469. package/vendor/abseil-cpp/absl/types/variant.h +866 -0
  1470. package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +222 -0
  1471. package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +532 -0
  1472. package/vendor/abseil-cpp/absl/types/variant_test.cc +2718 -0
  1473. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +54 -0
  1474. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +44 -0
  1475. package/vendor/abseil-cpp/absl/utility/utility.h +350 -0
  1476. package/vendor/abseil-cpp/absl/utility/utility_test.cc +376 -0
  1477. package/vendor/abseil-cpp/ci/absl_alternate_options.h +29 -0
  1478. package/vendor/abseil-cpp/ci/cmake_common.sh +25 -0
  1479. package/vendor/abseil-cpp/ci/cmake_install_test.sh +58 -0
  1480. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +102 -0
  1481. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +100 -0
  1482. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +97 -0
  1483. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +95 -0
  1484. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +21 -0
  1485. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +92 -0
  1486. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +98 -0
  1487. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +66 -0
  1488. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +65 -0
  1489. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +65 -0
  1490. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +57 -0
  1491. package/vendor/abseil-cpp/conanfile.py +51 -0
  1492. package/vendor/abseil-cpp/create_lts.py +133 -0
@@ -0,0 +1,2718 @@
1
+ // Copyright 2017 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ // Unit tests for the variant template. The 'is' and 'IsEmpty' methods
16
+ // of variant are not explicitly tested because they are used repeatedly
17
+ // in building other tests. All other public variant methods should have
18
+ // explicit tests.
19
+
20
+ #include "absl/types/variant.h"
21
+
22
+ // This test is a no-op when absl::variant is an alias for std::variant.
23
+ #if !defined(ABSL_USES_STD_VARIANT)
24
+
25
+ #include <algorithm>
26
+ #include <cstddef>
27
+ #include <functional>
28
+ #include <initializer_list>
29
+ #include <memory>
30
+ #include <ostream>
31
+ #include <queue>
32
+ #include <type_traits>
33
+ #include <unordered_set>
34
+ #include <utility>
35
+ #include <vector>
36
+
37
+ #include "gmock/gmock.h"
38
+ #include "gtest/gtest.h"
39
+ #include "absl/base/config.h"
40
+ #include "absl/base/port.h"
41
+ #include "absl/memory/memory.h"
42
+ #include "absl/meta/type_traits.h"
43
+ #include "absl/strings/string_view.h"
44
+
45
+ #ifdef ABSL_HAVE_EXCEPTIONS
46
+
47
+ #define ABSL_VARIANT_TEST_EXPECT_FAIL(expr, exception_t, text) \
48
+ EXPECT_THROW(expr, exception_t)
49
+
50
+ #else
51
+
52
+ #define ABSL_VARIANT_TEST_EXPECT_FAIL(expr, exception_t, text) \
53
+ EXPECT_DEATH_IF_SUPPORTED(expr, text)
54
+
55
+ #endif // ABSL_HAVE_EXCEPTIONS
56
+
57
+ #define ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(...) \
58
+ ABSL_VARIANT_TEST_EXPECT_FAIL((void)(__VA_ARGS__), absl::bad_variant_access, \
59
+ "Bad variant access")
60
+
61
+ struct Hashable {};
62
+
63
+ namespace std {
64
+ template <>
65
+ struct hash<Hashable> {
66
+ size_t operator()(const Hashable&);
67
+ };
68
+ } // namespace std
69
+
70
+ struct NonHashable {};
71
+
72
+ namespace absl {
73
+ ABSL_NAMESPACE_BEGIN
74
+ namespace {
75
+
76
+ using ::testing::DoubleEq;
77
+ using ::testing::Pointee;
78
+ using ::testing::VariantWith;
79
+
80
+ struct MoveCanThrow {
81
+ MoveCanThrow() : v(0) {}
82
+ MoveCanThrow(int v) : v(v) {} // NOLINT(runtime/explicit)
83
+ MoveCanThrow(const MoveCanThrow& other) : v(other.v) {}
84
+ MoveCanThrow& operator=(const MoveCanThrow& /*other*/) { return *this; }
85
+ int v;
86
+ };
87
+
88
+ bool operator==(MoveCanThrow lhs, MoveCanThrow rhs) { return lhs.v == rhs.v; }
89
+ bool operator!=(MoveCanThrow lhs, MoveCanThrow rhs) { return lhs.v != rhs.v; }
90
+ bool operator<(MoveCanThrow lhs, MoveCanThrow rhs) { return lhs.v < rhs.v; }
91
+ bool operator<=(MoveCanThrow lhs, MoveCanThrow rhs) { return lhs.v <= rhs.v; }
92
+ bool operator>=(MoveCanThrow lhs, MoveCanThrow rhs) { return lhs.v >= rhs.v; }
93
+ bool operator>(MoveCanThrow lhs, MoveCanThrow rhs) { return lhs.v > rhs.v; }
94
+
95
+ // This helper class allows us to determine if it was swapped with std::swap()
96
+ // or with its friend swap() function.
97
+ struct SpecialSwap {
98
+ explicit SpecialSwap(int i) : i(i) {}
99
+ friend void swap(SpecialSwap& a, SpecialSwap& b) {
100
+ a.special_swap = b.special_swap = true;
101
+ std::swap(a.i, b.i);
102
+ }
103
+ bool operator==(SpecialSwap other) const { return i == other.i; }
104
+ int i;
105
+ bool special_swap = false;
106
+ };
107
+
108
+ struct MoveOnlyWithListConstructor {
109
+ MoveOnlyWithListConstructor() = default;
110
+ explicit MoveOnlyWithListConstructor(std::initializer_list<int> /*ilist*/,
111
+ int value)
112
+ : value(value) {}
113
+ MoveOnlyWithListConstructor(MoveOnlyWithListConstructor&&) = default;
114
+ MoveOnlyWithListConstructor& operator=(MoveOnlyWithListConstructor&&) =
115
+ default;
116
+
117
+ int value = 0;
118
+ };
119
+
120
+ #ifdef ABSL_HAVE_EXCEPTIONS
121
+
122
+ struct ConversionException {};
123
+
124
+ template <class T>
125
+ struct ExceptionOnConversion {
126
+ operator T() const { // NOLINT(runtime/explicit)
127
+ throw ConversionException();
128
+ }
129
+ };
130
+
131
+ // Forces a variant into the valueless by exception state.
132
+ template <class H, class... T>
133
+ void ToValuelessByException(absl::variant<H, T...>& v) { // NOLINT
134
+ try {
135
+ v.template emplace<0>(ExceptionOnConversion<H>());
136
+ } catch (ConversionException& /*e*/) {
137
+ // This space intentionally left blank.
138
+ }
139
+ }
140
+
141
+ #endif // ABSL_HAVE_EXCEPTIONS
142
+
143
+ // An indexed sequence of distinct structures holding a single
144
+ // value of type T
145
+ template<typename T, size_t N>
146
+ struct ValueHolder {
147
+ explicit ValueHolder(const T& x) : value(x) {}
148
+ typedef T value_type;
149
+ value_type value;
150
+ static const size_t kIndex = N;
151
+ };
152
+ template<typename T, size_t N>
153
+ const size_t ValueHolder<T, N>::kIndex;
154
+
155
+ // The following three functions make ValueHolder compatible with
156
+ // EXPECT_EQ and EXPECT_NE
157
+ template<typename T, size_t N>
158
+ inline bool operator==(const ValueHolder<T, N>& left,
159
+ const ValueHolder<T, N>& right) {
160
+ return left.value == right.value;
161
+ }
162
+
163
+ template<typename T, size_t N>
164
+ inline bool operator!=(const ValueHolder<T, N>& left,
165
+ const ValueHolder<T, N>& right) {
166
+ return left.value != right.value;
167
+ }
168
+
169
+ template<typename T, size_t N>
170
+ inline std::ostream& operator<<(
171
+ std::ostream& stream, const ValueHolder<T, N>& object) {
172
+ return stream << object.value;
173
+ }
174
+
175
+ // Makes a variant holding twelve uniquely typed T wrappers.
176
+ template<typename T>
177
+ struct VariantFactory {
178
+ typedef variant<ValueHolder<T, 1>, ValueHolder<T, 2>, ValueHolder<T, 3>,
179
+ ValueHolder<T, 4>>
180
+ Type;
181
+ };
182
+
183
+ // A typelist in 1:1 with VariantFactory, to use type driven unit tests.
184
+ typedef ::testing::Types<ValueHolder<size_t, 1>, ValueHolder<size_t, 2>,
185
+ ValueHolder<size_t, 3>,
186
+ ValueHolder<size_t, 4>> VariantTypes;
187
+
188
+ // Increments the provided counter pointer in the destructor
189
+ struct IncrementInDtor {
190
+ explicit IncrementInDtor(int* counter) : counter(counter) {}
191
+ ~IncrementInDtor() { *counter += 1; }
192
+ int* counter;
193
+ };
194
+
195
+ struct IncrementInDtorCopyCanThrow {
196
+ explicit IncrementInDtorCopyCanThrow(int* counter) : counter(counter) {}
197
+ IncrementInDtorCopyCanThrow(IncrementInDtorCopyCanThrow&& other) noexcept =
198
+ default;
199
+ IncrementInDtorCopyCanThrow(const IncrementInDtorCopyCanThrow& other)
200
+ : counter(other.counter) {}
201
+ IncrementInDtorCopyCanThrow& operator=(
202
+ IncrementInDtorCopyCanThrow&&) noexcept = default;
203
+ IncrementInDtorCopyCanThrow& operator=(
204
+ IncrementInDtorCopyCanThrow const& other) {
205
+ counter = other.counter;
206
+ return *this;
207
+ }
208
+ ~IncrementInDtorCopyCanThrow() { *counter += 1; }
209
+ int* counter;
210
+ };
211
+
212
+ // This is defined so operator== for ValueHolder<IncrementInDtor> will
213
+ // return true if two IncrementInDtor objects increment the same
214
+ // counter
215
+ inline bool operator==(const IncrementInDtor& left,
216
+ const IncrementInDtor& right) {
217
+ return left.counter == right.counter;
218
+ }
219
+
220
+ // This is defined so EXPECT_EQ can work with IncrementInDtor
221
+ inline std::ostream& operator<<(
222
+ std::ostream& stream, const IncrementInDtor& object) {
223
+ return stream << object.counter;
224
+ }
225
+
226
+ // A class that can be copied, but not assigned.
227
+ class CopyNoAssign {
228
+ public:
229
+ explicit CopyNoAssign(int value) : foo(value) {}
230
+ CopyNoAssign(const CopyNoAssign& other) : foo(other.foo) {}
231
+ int foo;
232
+ private:
233
+ const CopyNoAssign& operator=(const CopyNoAssign&);
234
+ };
235
+
236
+ // A class that can neither be copied nor assigned. We provide
237
+ // overloads for the constructor with up to four parameters so we can
238
+ // test the overloads of variant::emplace.
239
+ class NonCopyable {
240
+ public:
241
+ NonCopyable()
242
+ : value(0) {}
243
+ explicit NonCopyable(int value1)
244
+ : value(value1) {}
245
+
246
+ NonCopyable(int value1, int value2)
247
+ : value(value1 + value2) {}
248
+
249
+ NonCopyable(int value1, int value2, int value3)
250
+ : value(value1 + value2 + value3) {}
251
+
252
+ NonCopyable(int value1, int value2, int value3, int value4)
253
+ : value(value1 + value2 + value3 + value4) {}
254
+ NonCopyable(const NonCopyable&) = delete;
255
+ NonCopyable& operator=(const NonCopyable&) = delete;
256
+ int value;
257
+ };
258
+
259
+ // A typed test and typed test case over the VariantTypes typelist,
260
+ // from which we derive a number of tests that will execute for one of
261
+ // each type.
262
+ template <typename T>
263
+ class VariantTypesTest : public ::testing::Test {};
264
+ TYPED_TEST_SUITE(VariantTypesTest, VariantTypes);
265
+
266
+ ////////////////////
267
+ // [variant.ctor] //
268
+ ////////////////////
269
+
270
+ struct NonNoexceptDefaultConstructible {
271
+ NonNoexceptDefaultConstructible() {}
272
+ int value = 5;
273
+ };
274
+
275
+ struct NonDefaultConstructible {
276
+ NonDefaultConstructible() = delete;
277
+ };
278
+
279
+ TEST(VariantTest, TestDefaultConstructor) {
280
+ {
281
+ using X = variant<int>;
282
+ constexpr variant<int> x{};
283
+ ASSERT_FALSE(x.valueless_by_exception());
284
+ ASSERT_EQ(0u, x.index());
285
+ EXPECT_EQ(0, absl::get<0>(x));
286
+ EXPECT_TRUE(std::is_nothrow_default_constructible<X>::value);
287
+ }
288
+
289
+ {
290
+ using X = variant<NonNoexceptDefaultConstructible>;
291
+ X x{};
292
+ ASSERT_FALSE(x.valueless_by_exception());
293
+ ASSERT_EQ(0u, x.index());
294
+ EXPECT_EQ(5, absl::get<0>(x).value);
295
+ EXPECT_FALSE(std::is_nothrow_default_constructible<X>::value);
296
+ }
297
+
298
+ {
299
+ using X = variant<int, NonNoexceptDefaultConstructible>;
300
+ X x{};
301
+ ASSERT_FALSE(x.valueless_by_exception());
302
+ ASSERT_EQ(0u, x.index());
303
+ EXPECT_EQ(0, absl::get<0>(x));
304
+ EXPECT_TRUE(std::is_nothrow_default_constructible<X>::value);
305
+ }
306
+
307
+ {
308
+ using X = variant<NonNoexceptDefaultConstructible, int>;
309
+ X x{};
310
+ ASSERT_FALSE(x.valueless_by_exception());
311
+ ASSERT_EQ(0u, x.index());
312
+ EXPECT_EQ(5, absl::get<0>(x).value);
313
+ EXPECT_FALSE(std::is_nothrow_default_constructible<X>::value);
314
+ }
315
+ EXPECT_FALSE(
316
+ std::is_default_constructible<variant<NonDefaultConstructible>>::value);
317
+ EXPECT_FALSE((std::is_default_constructible<
318
+ variant<NonDefaultConstructible, int>>::value));
319
+ EXPECT_TRUE((std::is_default_constructible<
320
+ variant<int, NonDefaultConstructible>>::value));
321
+ }
322
+
323
+ // Test that for each slot, copy constructing a variant with that type
324
+ // produces a sensible object that correctly reports its type, and
325
+ // that copies the provided value.
326
+ TYPED_TEST(VariantTypesTest, TestCopyCtor) {
327
+ typedef typename VariantFactory<typename TypeParam::value_type>::Type Variant;
328
+ using value_type1 = absl::variant_alternative_t<0, Variant>;
329
+ using value_type2 = absl::variant_alternative_t<1, Variant>;
330
+ using value_type3 = absl::variant_alternative_t<2, Variant>;
331
+ using value_type4 = absl::variant_alternative_t<3, Variant>;
332
+ const TypeParam value(TypeParam::kIndex);
333
+ Variant original(value);
334
+ Variant copied(original);
335
+ EXPECT_TRUE(absl::holds_alternative<value_type1>(copied) ||
336
+ TypeParam::kIndex != 1);
337
+ EXPECT_TRUE(absl::holds_alternative<value_type2>(copied) ||
338
+ TypeParam::kIndex != 2);
339
+ EXPECT_TRUE(absl::holds_alternative<value_type3>(copied) ||
340
+ TypeParam::kIndex != 3);
341
+ EXPECT_TRUE(absl::holds_alternative<value_type4>(copied) ||
342
+ TypeParam::kIndex != 4);
343
+ EXPECT_TRUE((absl::get_if<value_type1>(&original) ==
344
+ absl::get_if<value_type1>(&copied)) ||
345
+ TypeParam::kIndex == 1);
346
+ EXPECT_TRUE((absl::get_if<value_type2>(&original) ==
347
+ absl::get_if<value_type2>(&copied)) ||
348
+ TypeParam::kIndex == 2);
349
+ EXPECT_TRUE((absl::get_if<value_type3>(&original) ==
350
+ absl::get_if<value_type3>(&copied)) ||
351
+ TypeParam::kIndex == 3);
352
+ EXPECT_TRUE((absl::get_if<value_type4>(&original) ==
353
+ absl::get_if<value_type4>(&copied)) ||
354
+ TypeParam::kIndex == 4);
355
+ EXPECT_TRUE((absl::get_if<value_type1>(&original) ==
356
+ absl::get_if<value_type1>(&copied)) ||
357
+ TypeParam::kIndex == 1);
358
+ EXPECT_TRUE((absl::get_if<value_type2>(&original) ==
359
+ absl::get_if<value_type2>(&copied)) ||
360
+ TypeParam::kIndex == 2);
361
+ EXPECT_TRUE((absl::get_if<value_type3>(&original) ==
362
+ absl::get_if<value_type3>(&copied)) ||
363
+ TypeParam::kIndex == 3);
364
+ EXPECT_TRUE((absl::get_if<value_type4>(&original) ==
365
+ absl::get_if<value_type4>(&copied)) ||
366
+ TypeParam::kIndex == 4);
367
+ const TypeParam* ovalptr = absl::get_if<TypeParam>(&original);
368
+ const TypeParam* cvalptr = absl::get_if<TypeParam>(&copied);
369
+ ASSERT_TRUE(ovalptr != nullptr);
370
+ ASSERT_TRUE(cvalptr != nullptr);
371
+ EXPECT_EQ(*ovalptr, *cvalptr);
372
+ TypeParam* mutable_ovalptr = absl::get_if<TypeParam>(&original);
373
+ TypeParam* mutable_cvalptr = absl::get_if<TypeParam>(&copied);
374
+ ASSERT_TRUE(mutable_ovalptr != nullptr);
375
+ ASSERT_TRUE(mutable_cvalptr != nullptr);
376
+ EXPECT_EQ(*mutable_ovalptr, *mutable_cvalptr);
377
+ }
378
+
379
+ template <class>
380
+ struct MoveOnly {
381
+ MoveOnly() = default;
382
+ explicit MoveOnly(int value) : value(value) {}
383
+ MoveOnly(MoveOnly&&) = default;
384
+ MoveOnly& operator=(MoveOnly&&) = default;
385
+ int value = 5;
386
+ };
387
+
388
+ TEST(VariantTest, TestMoveConstruct) {
389
+ using V = variant<MoveOnly<class A>, MoveOnly<class B>, MoveOnly<class C>>;
390
+
391
+ V v(in_place_index<1>, 10);
392
+ V v2 = absl::move(v);
393
+ EXPECT_EQ(10, absl::get<1>(v2).value);
394
+ }
395
+
396
+ // Used internally to emulate missing triviality traits for tests.
397
+ template <class T>
398
+ union SingleUnion {
399
+ T member;
400
+ };
401
+
402
+ // NOTE: These don't work with types that can't be union members.
403
+ // They are just for testing.
404
+ template <class T>
405
+ struct is_trivially_move_constructible
406
+ : std::is_move_constructible<SingleUnion<T>>::type {};
407
+
408
+ template <class T>
409
+ struct is_trivially_move_assignable
410
+ : absl::is_move_assignable<SingleUnion<T>>::type {};
411
+
412
+ TEST(VariantTest, NothrowMoveConstructible) {
413
+ // Verify that variant is nothrow move constructible iff its template
414
+ // arguments are.
415
+ using U = std::unique_ptr<int>;
416
+ struct E {
417
+ E(E&&) {}
418
+ };
419
+ static_assert(std::is_nothrow_move_constructible<variant<U>>::value, "");
420
+ static_assert(std::is_nothrow_move_constructible<variant<U, int>>::value, "");
421
+ static_assert(!std::is_nothrow_move_constructible<variant<U, E>>::value, "");
422
+ }
423
+
424
+ // Test that for each slot, constructing a variant with that type
425
+ // produces a sensible object that correctly reports its type, and
426
+ // that copies the provided value.
427
+ TYPED_TEST(VariantTypesTest, TestValueCtor) {
428
+ typedef typename VariantFactory<typename TypeParam::value_type>::Type Variant;
429
+ using value_type1 = absl::variant_alternative_t<0, Variant>;
430
+ using value_type2 = absl::variant_alternative_t<1, Variant>;
431
+ using value_type3 = absl::variant_alternative_t<2, Variant>;
432
+ using value_type4 = absl::variant_alternative_t<3, Variant>;
433
+ const TypeParam value(TypeParam::kIndex);
434
+ Variant v(value);
435
+ EXPECT_TRUE(absl::holds_alternative<value_type1>(v) ||
436
+ TypeParam::kIndex != 1);
437
+ EXPECT_TRUE(absl::holds_alternative<value_type2>(v) ||
438
+ TypeParam::kIndex != 2);
439
+ EXPECT_TRUE(absl::holds_alternative<value_type3>(v) ||
440
+ TypeParam::kIndex != 3);
441
+ EXPECT_TRUE(absl::holds_alternative<value_type4>(v) ||
442
+ TypeParam::kIndex != 4);
443
+ EXPECT_TRUE(nullptr != absl::get_if<value_type1>(&v) ||
444
+ TypeParam::kIndex != 1);
445
+ EXPECT_TRUE(nullptr != absl::get_if<value_type2>(&v) ||
446
+ TypeParam::kIndex != 2);
447
+ EXPECT_TRUE(nullptr != absl::get_if<value_type3>(&v) ||
448
+ TypeParam::kIndex != 3);
449
+ EXPECT_TRUE(nullptr != absl::get_if<value_type4>(&v) ||
450
+ TypeParam::kIndex != 4);
451
+ EXPECT_TRUE(nullptr != absl::get_if<value_type1>(&v) ||
452
+ TypeParam::kIndex != 1);
453
+ EXPECT_TRUE(nullptr != absl::get_if<value_type2>(&v) ||
454
+ TypeParam::kIndex != 2);
455
+ EXPECT_TRUE(nullptr != absl::get_if<value_type3>(&v) ||
456
+ TypeParam::kIndex != 3);
457
+ EXPECT_TRUE(nullptr != absl::get_if<value_type4>(&v) ||
458
+ TypeParam::kIndex != 4);
459
+ const TypeParam* valptr = absl::get_if<TypeParam>(&v);
460
+ ASSERT_TRUE(nullptr != valptr);
461
+ EXPECT_EQ(value.value, valptr->value);
462
+ const TypeParam* mutable_valptr = absl::get_if<TypeParam>(&v);
463
+ ASSERT_TRUE(nullptr != mutable_valptr);
464
+ EXPECT_EQ(value.value, mutable_valptr->value);
465
+ }
466
+
467
+ TEST(VariantTest, AmbiguousValueConstructor) {
468
+ EXPECT_FALSE((std::is_convertible<int, absl::variant<int, int>>::value));
469
+ EXPECT_FALSE((std::is_constructible<absl::variant<int, int>, int>::value));
470
+ }
471
+
472
+ TEST(VariantTest, InPlaceType) {
473
+ using Var = variant<int, std::string, NonCopyable, std::vector<int>>;
474
+
475
+ Var v1(in_place_type_t<int>(), 7);
476
+ ASSERT_TRUE(absl::holds_alternative<int>(v1));
477
+ EXPECT_EQ(7, absl::get<int>(v1));
478
+
479
+ Var v2(in_place_type_t<std::string>(), "ABC");
480
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v2));
481
+ EXPECT_EQ("ABC", absl::get<std::string>(v2));
482
+
483
+ Var v3(in_place_type_t<std::string>(), "ABC", 2u);
484
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v3));
485
+ EXPECT_EQ("AB", absl::get<std::string>(v3));
486
+
487
+ Var v4(in_place_type_t<NonCopyable>{});
488
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v4));
489
+
490
+ Var v5(in_place_type_t<std::vector<int>>(), {1, 2, 3});
491
+ ASSERT_TRUE(absl::holds_alternative<std::vector<int>>(v5));
492
+ EXPECT_THAT(absl::get<std::vector<int>>(v5), ::testing::ElementsAre(1, 2, 3));
493
+ }
494
+
495
+ TEST(VariantTest, InPlaceTypeVariableTemplate) {
496
+ using Var = variant<int, std::string, NonCopyable, std::vector<int>>;
497
+
498
+ Var v1(in_place_type<int>, 7);
499
+ ASSERT_TRUE(absl::holds_alternative<int>(v1));
500
+ EXPECT_EQ(7, absl::get<int>(v1));
501
+
502
+ Var v2(in_place_type<std::string>, "ABC");
503
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v2));
504
+ EXPECT_EQ("ABC", absl::get<std::string>(v2));
505
+
506
+ Var v3(in_place_type<std::string>, "ABC", 2u);
507
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v3));
508
+ EXPECT_EQ("AB", absl::get<std::string>(v3));
509
+
510
+ Var v4(in_place_type<NonCopyable>);
511
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v4));
512
+
513
+ Var v5(in_place_type<std::vector<int>>, {1, 2, 3});
514
+ ASSERT_TRUE(absl::holds_alternative<std::vector<int>>(v5));
515
+ EXPECT_THAT(absl::get<std::vector<int>>(v5), ::testing::ElementsAre(1, 2, 3));
516
+ }
517
+
518
+ TEST(VariantTest, InPlaceTypeInitializerList) {
519
+ using Var =
520
+ variant<int, std::string, NonCopyable, MoveOnlyWithListConstructor>;
521
+
522
+ Var v1(in_place_type_t<MoveOnlyWithListConstructor>(), {1, 2, 3, 4, 5}, 6);
523
+ ASSERT_TRUE(absl::holds_alternative<MoveOnlyWithListConstructor>(v1));
524
+ EXPECT_EQ(6, absl::get<MoveOnlyWithListConstructor>(v1).value);
525
+ }
526
+
527
+ TEST(VariantTest, InPlaceTypeInitializerListVariabletemplate) {
528
+ using Var =
529
+ variant<int, std::string, NonCopyable, MoveOnlyWithListConstructor>;
530
+
531
+ Var v1(in_place_type<MoveOnlyWithListConstructor>, {1, 2, 3, 4, 5}, 6);
532
+ ASSERT_TRUE(absl::holds_alternative<MoveOnlyWithListConstructor>(v1));
533
+ EXPECT_EQ(6, absl::get<MoveOnlyWithListConstructor>(v1).value);
534
+ }
535
+
536
+ TEST(VariantTest, InPlaceIndex) {
537
+ using Var = variant<int, std::string, NonCopyable, std::vector<int>>;
538
+
539
+ Var v1(in_place_index_t<0>(), 7);
540
+ ASSERT_TRUE(absl::holds_alternative<int>(v1));
541
+ EXPECT_EQ(7, absl::get<int>(v1));
542
+
543
+ Var v2(in_place_index_t<1>(), "ABC");
544
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v2));
545
+ EXPECT_EQ("ABC", absl::get<std::string>(v2));
546
+
547
+ Var v3(in_place_index_t<1>(), "ABC", 2u);
548
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v3));
549
+ EXPECT_EQ("AB", absl::get<std::string>(v3));
550
+
551
+ Var v4(in_place_index_t<2>{});
552
+ EXPECT_TRUE(absl::holds_alternative<NonCopyable>(v4));
553
+
554
+ // Verify that a variant with only non-copyables can still be constructed.
555
+ EXPECT_TRUE(absl::holds_alternative<NonCopyable>(
556
+ variant<NonCopyable>(in_place_index_t<0>{})));
557
+
558
+ Var v5(in_place_index_t<3>(), {1, 2, 3});
559
+ ASSERT_TRUE(absl::holds_alternative<std::vector<int>>(v5));
560
+ EXPECT_THAT(absl::get<std::vector<int>>(v5), ::testing::ElementsAre(1, 2, 3));
561
+ }
562
+
563
+ TEST(VariantTest, InPlaceIndexVariableTemplate) {
564
+ using Var = variant<int, std::string, NonCopyable, std::vector<int>>;
565
+
566
+ Var v1(in_place_index<0>, 7);
567
+ ASSERT_TRUE(absl::holds_alternative<int>(v1));
568
+ EXPECT_EQ(7, absl::get<int>(v1));
569
+
570
+ Var v2(in_place_index<1>, "ABC");
571
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v2));
572
+ EXPECT_EQ("ABC", absl::get<std::string>(v2));
573
+
574
+ Var v3(in_place_index<1>, "ABC", 2u);
575
+ ASSERT_TRUE(absl::holds_alternative<std::string>(v3));
576
+ EXPECT_EQ("AB", absl::get<std::string>(v3));
577
+
578
+ Var v4(in_place_index<2>);
579
+ EXPECT_TRUE(absl::holds_alternative<NonCopyable>(v4));
580
+
581
+ // Verify that a variant with only non-copyables can still be constructed.
582
+ EXPECT_TRUE(absl::holds_alternative<NonCopyable>(
583
+ variant<NonCopyable>(in_place_index<0>)));
584
+
585
+ Var v5(in_place_index<3>, {1, 2, 3});
586
+ ASSERT_TRUE(absl::holds_alternative<std::vector<int>>(v5));
587
+ EXPECT_THAT(absl::get<std::vector<int>>(v5), ::testing::ElementsAre(1, 2, 3));
588
+ }
589
+
590
+ TEST(VariantTest, InPlaceIndexInitializerList) {
591
+ using Var =
592
+ variant<int, std::string, NonCopyable, MoveOnlyWithListConstructor>;
593
+
594
+ Var v1(in_place_index_t<3>(), {1, 2, 3, 4, 5}, 6);
595
+ ASSERT_TRUE(absl::holds_alternative<MoveOnlyWithListConstructor>(v1));
596
+ EXPECT_EQ(6, absl::get<MoveOnlyWithListConstructor>(v1).value);
597
+ }
598
+
599
+ TEST(VariantTest, InPlaceIndexInitializerListVariableTemplate) {
600
+ using Var =
601
+ variant<int, std::string, NonCopyable, MoveOnlyWithListConstructor>;
602
+
603
+ Var v1(in_place_index<3>, {1, 2, 3, 4, 5}, 6);
604
+ ASSERT_TRUE(absl::holds_alternative<MoveOnlyWithListConstructor>(v1));
605
+ EXPECT_EQ(6, absl::get<MoveOnlyWithListConstructor>(v1).value);
606
+ }
607
+
608
+ ////////////////////
609
+ // [variant.dtor] //
610
+ ////////////////////
611
+
612
+ // Make sure that the destructor destroys the contained value
613
+ TEST(VariantTest, TestDtor) {
614
+ typedef VariantFactory<IncrementInDtor>::Type Variant;
615
+ using value_type1 = absl::variant_alternative_t<0, Variant>;
616
+ using value_type2 = absl::variant_alternative_t<1, Variant>;
617
+ using value_type3 = absl::variant_alternative_t<2, Variant>;
618
+ using value_type4 = absl::variant_alternative_t<3, Variant>;
619
+ int counter = 0;
620
+ IncrementInDtor counter_adjuster(&counter);
621
+ EXPECT_EQ(0, counter);
622
+
623
+ value_type1 value1(counter_adjuster);
624
+ { Variant object(value1); }
625
+ EXPECT_EQ(1, counter);
626
+
627
+ value_type2 value2(counter_adjuster);
628
+ { Variant object(value2); }
629
+ EXPECT_EQ(2, counter);
630
+
631
+ value_type3 value3(counter_adjuster);
632
+ { Variant object(value3); }
633
+ EXPECT_EQ(3, counter);
634
+
635
+ value_type4 value4(counter_adjuster);
636
+ { Variant object(value4); }
637
+ EXPECT_EQ(4, counter);
638
+ }
639
+
640
+ #ifdef ABSL_HAVE_EXCEPTIONS
641
+
642
+ // See comment in absl/base/config.h
643
+ #if defined(ABSL_INTERNAL_MSVC_2017_DBG_MODE)
644
+ TEST(VariantTest, DISABLED_TestDtorValuelessByException)
645
+ #else
646
+ // Test destruction when in the valueless_by_exception state.
647
+ TEST(VariantTest, TestDtorValuelessByException)
648
+ #endif
649
+ {
650
+ int counter = 0;
651
+ IncrementInDtor counter_adjuster(&counter);
652
+
653
+ {
654
+ using Variant = VariantFactory<IncrementInDtor>::Type;
655
+
656
+ Variant v(in_place_index<0>, counter_adjuster);
657
+ EXPECT_EQ(0, counter);
658
+
659
+ ToValuelessByException(v);
660
+ ASSERT_TRUE(v.valueless_by_exception());
661
+ EXPECT_EQ(1, counter);
662
+ }
663
+ EXPECT_EQ(1, counter);
664
+ }
665
+
666
+ #endif // ABSL_HAVE_EXCEPTIONS
667
+
668
+ //////////////////////
669
+ // [variant.assign] //
670
+ //////////////////////
671
+
672
+ // Test that self-assignment doesn't destroy the current value
673
+ TEST(VariantTest, TestSelfAssignment) {
674
+ typedef VariantFactory<IncrementInDtor>::Type Variant;
675
+ int counter = 0;
676
+ IncrementInDtor counter_adjuster(&counter);
677
+ absl::variant_alternative_t<0, Variant> value(counter_adjuster);
678
+ Variant object(value);
679
+ object.operator=(object);
680
+ EXPECT_EQ(0, counter);
681
+
682
+ // A string long enough that it's likely to defeat any inline representation
683
+ // optimization.
684
+ const std::string long_str(128, 'a');
685
+
686
+ std::string foo = long_str;
687
+ foo = *&foo;
688
+ EXPECT_EQ(long_str, foo);
689
+
690
+ variant<int, std::string> so = long_str;
691
+ ASSERT_EQ(1u, so.index());
692
+ EXPECT_EQ(long_str, absl::get<1>(so));
693
+ so = *&so;
694
+
695
+ ASSERT_EQ(1u, so.index());
696
+ EXPECT_EQ(long_str, absl::get<1>(so));
697
+ }
698
+
699
+ // Test that assigning a variant<..., T, ...> to a variant<..., T, ...> produces
700
+ // a variant<..., T, ...> with the correct value.
701
+ TYPED_TEST(VariantTypesTest, TestAssignmentCopiesValueSameTypes) {
702
+ typedef typename VariantFactory<typename TypeParam::value_type>::Type Variant;
703
+ const TypeParam value(TypeParam::kIndex);
704
+ const Variant source(value);
705
+ Variant target(TypeParam(value.value + 1));
706
+ ASSERT_TRUE(absl::holds_alternative<TypeParam>(source));
707
+ ASSERT_TRUE(absl::holds_alternative<TypeParam>(target));
708
+ ASSERT_NE(absl::get<TypeParam>(source), absl::get<TypeParam>(target));
709
+ target = source;
710
+ ASSERT_TRUE(absl::holds_alternative<TypeParam>(source));
711
+ ASSERT_TRUE(absl::holds_alternative<TypeParam>(target));
712
+ EXPECT_EQ(absl::get<TypeParam>(source), absl::get<TypeParam>(target));
713
+ }
714
+
715
+ // Test that assisnging a variant<..., T, ...> to a variant<1, ...>
716
+ // produces a variant<..., T, ...> with the correct value.
717
+ TYPED_TEST(VariantTypesTest, TestAssignmentCopiesValuesVaryingSourceType) {
718
+ typedef typename VariantFactory<typename TypeParam::value_type>::Type Variant;
719
+ using value_type1 = absl::variant_alternative_t<0, Variant>;
720
+ const TypeParam value(TypeParam::kIndex);
721
+ const Variant source(value);
722
+ ASSERT_TRUE(absl::holds_alternative<TypeParam>(source));
723
+ Variant target(value_type1(1));
724
+ ASSERT_TRUE(absl::holds_alternative<value_type1>(target));
725
+ target = source;
726
+ EXPECT_TRUE(absl::holds_alternative<TypeParam>(source));
727
+ EXPECT_TRUE(absl::holds_alternative<TypeParam>(target));
728
+ EXPECT_EQ(absl::get<TypeParam>(source), absl::get<TypeParam>(target));
729
+ }
730
+
731
+ // Test that assigning a variant<1, ...> to a variant<..., T, ...>
732
+ // produces a variant<1, ...> with the correct value.
733
+ TYPED_TEST(VariantTypesTest, TestAssignmentCopiesValuesVaryingTargetType) {
734
+ typedef typename VariantFactory<typename TypeParam::value_type>::Type Variant;
735
+ using value_type1 = absl::variant_alternative_t<0, Variant>;
736
+ const Variant source(value_type1(1));
737
+ ASSERT_TRUE(absl::holds_alternative<value_type1>(source));
738
+ const TypeParam value(TypeParam::kIndex);
739
+ Variant target(value);
740
+ ASSERT_TRUE(absl::holds_alternative<TypeParam>(target));
741
+ target = source;
742
+ EXPECT_TRUE(absl::holds_alternative<value_type1>(target));
743
+ EXPECT_TRUE(absl::holds_alternative<value_type1>(source));
744
+ EXPECT_EQ(absl::get<value_type1>(source), absl::get<value_type1>(target));
745
+ }
746
+
747
+ // Test that operator=<T> works, that assigning a new value destroys
748
+ // the old and that assigning the new value again does not redestroy
749
+ // the old
750
+ TEST(VariantTest, TestAssign) {
751
+ typedef VariantFactory<IncrementInDtor>::Type Variant;
752
+ using value_type1 = absl::variant_alternative_t<0, Variant>;
753
+ using value_type2 = absl::variant_alternative_t<1, Variant>;
754
+ using value_type3 = absl::variant_alternative_t<2, Variant>;
755
+ using value_type4 = absl::variant_alternative_t<3, Variant>;
756
+
757
+ const int kSize = 4;
758
+ int counter[kSize];
759
+ std::unique_ptr<IncrementInDtor> counter_adjustor[kSize];
760
+ for (int i = 0; i != kSize; i++) {
761
+ counter[i] = 0;
762
+ counter_adjustor[i] = absl::make_unique<IncrementInDtor>(&counter[i]);
763
+ }
764
+
765
+ value_type1 v1(*counter_adjustor[0]);
766
+ value_type2 v2(*counter_adjustor[1]);
767
+ value_type3 v3(*counter_adjustor[2]);
768
+ value_type4 v4(*counter_adjustor[3]);
769
+
770
+ // Test that reassignment causes destruction of old value
771
+ {
772
+ Variant object(v1);
773
+ object = v2;
774
+ object = v3;
775
+ object = v4;
776
+ object = v1;
777
+ }
778
+
779
+ EXPECT_EQ(2, counter[0]);
780
+ EXPECT_EQ(1, counter[1]);
781
+ EXPECT_EQ(1, counter[2]);
782
+ EXPECT_EQ(1, counter[3]);
783
+
784
+ std::fill(std::begin(counter), std::end(counter), 0);
785
+
786
+ // Test that self-assignment does not cause destruction of old value
787
+ {
788
+ Variant object(v1);
789
+ object.operator=(object);
790
+ EXPECT_EQ(0, counter[0]);
791
+ }
792
+ {
793
+ Variant object(v2);
794
+ object.operator=(object);
795
+ EXPECT_EQ(0, counter[1]);
796
+ }
797
+ {
798
+ Variant object(v3);
799
+ object.operator=(object);
800
+ EXPECT_EQ(0, counter[2]);
801
+ }
802
+ {
803
+ Variant object(v4);
804
+ object.operator=(object);
805
+ EXPECT_EQ(0, counter[3]);
806
+ }
807
+
808
+ EXPECT_EQ(1, counter[0]);
809
+ EXPECT_EQ(1, counter[1]);
810
+ EXPECT_EQ(1, counter[2]);
811
+ EXPECT_EQ(1, counter[3]);
812
+ }
813
+
814
+ // This tests that we perform a backup if the copy-assign can throw but the move
815
+ // cannot throw.
816
+ TEST(VariantTest, TestBackupAssign) {
817
+ typedef VariantFactory<IncrementInDtorCopyCanThrow>::Type Variant;
818
+ using value_type1 = absl::variant_alternative_t<0, Variant>;
819
+ using value_type2 = absl::variant_alternative_t<1, Variant>;
820
+ using value_type3 = absl::variant_alternative_t<2, Variant>;
821
+ using value_type4 = absl::variant_alternative_t<3, Variant>;
822
+
823
+ const int kSize = 4;
824
+ int counter[kSize];
825
+ std::unique_ptr<IncrementInDtorCopyCanThrow> counter_adjustor[kSize];
826
+ for (int i = 0; i != kSize; i++) {
827
+ counter[i] = 0;
828
+ counter_adjustor[i].reset(new IncrementInDtorCopyCanThrow(&counter[i]));
829
+ }
830
+
831
+ value_type1 v1(*counter_adjustor[0]);
832
+ value_type2 v2(*counter_adjustor[1]);
833
+ value_type3 v3(*counter_adjustor[2]);
834
+ value_type4 v4(*counter_adjustor[3]);
835
+
836
+ // Test that reassignment causes destruction of old value
837
+ {
838
+ Variant object(v1);
839
+ object = v2;
840
+ object = v3;
841
+ object = v4;
842
+ object = v1;
843
+ }
844
+
845
+ // libstdc++ doesn't pass this test
846
+ #if !(defined(ABSL_USES_STD_VARIANT) && defined(__GLIBCXX__))
847
+ EXPECT_EQ(3, counter[0]);
848
+ EXPECT_EQ(2, counter[1]);
849
+ EXPECT_EQ(2, counter[2]);
850
+ EXPECT_EQ(2, counter[3]);
851
+ #endif
852
+
853
+ std::fill(std::begin(counter), std::end(counter), 0);
854
+
855
+ // Test that self-assignment does not cause destruction of old value
856
+ {
857
+ Variant object(v1);
858
+ object.operator=(object);
859
+ EXPECT_EQ(0, counter[0]);
860
+ }
861
+ {
862
+ Variant object(v2);
863
+ object.operator=(object);
864
+ EXPECT_EQ(0, counter[1]);
865
+ }
866
+ {
867
+ Variant object(v3);
868
+ object.operator=(object);
869
+ EXPECT_EQ(0, counter[2]);
870
+ }
871
+ {
872
+ Variant object(v4);
873
+ object.operator=(object);
874
+ EXPECT_EQ(0, counter[3]);
875
+ }
876
+
877
+ EXPECT_EQ(1, counter[0]);
878
+ EXPECT_EQ(1, counter[1]);
879
+ EXPECT_EQ(1, counter[2]);
880
+ EXPECT_EQ(1, counter[3]);
881
+ }
882
+
883
+ ///////////////////
884
+ // [variant.mod] //
885
+ ///////////////////
886
+
887
+ TEST(VariantTest, TestEmplaceBasic) {
888
+ using Variant = variant<int, char>;
889
+
890
+ Variant v(absl::in_place_index<0>, 0);
891
+
892
+ {
893
+ char& emplace_result = v.emplace<char>();
894
+ ASSERT_TRUE(absl::holds_alternative<char>(v));
895
+ EXPECT_EQ(absl::get<char>(v), 0);
896
+ EXPECT_EQ(&emplace_result, &absl::get<char>(v));
897
+ }
898
+
899
+ // Make sure that another emplace does zero-initialization
900
+ absl::get<char>(v) = 'a';
901
+ v.emplace<char>('b');
902
+ ASSERT_TRUE(absl::holds_alternative<char>(v));
903
+ EXPECT_EQ(absl::get<char>(v), 'b');
904
+
905
+ {
906
+ int& emplace_result = v.emplace<int>();
907
+ EXPECT_TRUE(absl::holds_alternative<int>(v));
908
+ EXPECT_EQ(absl::get<int>(v), 0);
909
+ EXPECT_EQ(&emplace_result, &absl::get<int>(v));
910
+ }
911
+ }
912
+
913
+ TEST(VariantTest, TestEmplaceInitializerList) {
914
+ using Var =
915
+ variant<int, std::string, NonCopyable, MoveOnlyWithListConstructor>;
916
+
917
+ Var v1(absl::in_place_index<0>, 555);
918
+ MoveOnlyWithListConstructor& emplace_result =
919
+ v1.emplace<MoveOnlyWithListConstructor>({1, 2, 3, 4, 5}, 6);
920
+ ASSERT_TRUE(absl::holds_alternative<MoveOnlyWithListConstructor>(v1));
921
+ EXPECT_EQ(6, absl::get<MoveOnlyWithListConstructor>(v1).value);
922
+ EXPECT_EQ(&emplace_result, &absl::get<MoveOnlyWithListConstructor>(v1));
923
+ }
924
+
925
+ TEST(VariantTest, TestEmplaceIndex) {
926
+ using Variant = variant<int, char>;
927
+
928
+ Variant v(absl::in_place_index<0>, 555);
929
+
930
+ {
931
+ char& emplace_result = v.emplace<1>();
932
+ ASSERT_TRUE(absl::holds_alternative<char>(v));
933
+ EXPECT_EQ(absl::get<char>(v), 0);
934
+ EXPECT_EQ(&emplace_result, &absl::get<char>(v));
935
+ }
936
+
937
+ // Make sure that another emplace does zero-initialization
938
+ absl::get<char>(v) = 'a';
939
+ v.emplace<1>('b');
940
+ ASSERT_TRUE(absl::holds_alternative<char>(v));
941
+ EXPECT_EQ(absl::get<char>(v), 'b');
942
+
943
+ {
944
+ int& emplace_result = v.emplace<0>();
945
+ EXPECT_TRUE(absl::holds_alternative<int>(v));
946
+ EXPECT_EQ(absl::get<int>(v), 0);
947
+ EXPECT_EQ(&emplace_result, &absl::get<int>(v));
948
+ }
949
+ }
950
+
951
+ TEST(VariantTest, TestEmplaceIndexInitializerList) {
952
+ using Var =
953
+ variant<int, std::string, NonCopyable, MoveOnlyWithListConstructor>;
954
+
955
+ Var v1(absl::in_place_index<0>, 555);
956
+ MoveOnlyWithListConstructor& emplace_result =
957
+ v1.emplace<3>({1, 2, 3, 4, 5}, 6);
958
+ ASSERT_TRUE(absl::holds_alternative<MoveOnlyWithListConstructor>(v1));
959
+ EXPECT_EQ(6, absl::get<MoveOnlyWithListConstructor>(v1).value);
960
+ EXPECT_EQ(&emplace_result, &absl::get<MoveOnlyWithListConstructor>(v1));
961
+ }
962
+
963
+ //////////////////////
964
+ // [variant.status] //
965
+ //////////////////////
966
+
967
+ TEST(VariantTest, Index) {
968
+ using Var = variant<int, std::string, double>;
969
+
970
+ Var v = 1;
971
+ EXPECT_EQ(0u, v.index());
972
+ v = "str";
973
+ EXPECT_EQ(1u, v.index());
974
+ v = 0.;
975
+ EXPECT_EQ(2u, v.index());
976
+
977
+ Var v2 = v;
978
+ EXPECT_EQ(2u, v2.index());
979
+ v2.emplace<int>(3);
980
+ EXPECT_EQ(0u, v2.index());
981
+ }
982
+
983
+ TEST(VariantTest, NotValuelessByException) {
984
+ using Var = variant<int, std::string, double>;
985
+
986
+ Var v = 1;
987
+ EXPECT_FALSE(v.valueless_by_exception());
988
+ v = "str";
989
+ EXPECT_FALSE(v.valueless_by_exception());
990
+ v = 0.;
991
+ EXPECT_FALSE(v.valueless_by_exception());
992
+
993
+ Var v2 = v;
994
+ EXPECT_FALSE(v.valueless_by_exception());
995
+ v2.emplace<int>(3);
996
+ EXPECT_FALSE(v.valueless_by_exception());
997
+ }
998
+
999
+ #ifdef ABSL_HAVE_EXCEPTIONS
1000
+
1001
+ TEST(VariantTest, IndexValuelessByException) {
1002
+ using Var = variant<MoveCanThrow, std::string, double>;
1003
+
1004
+ Var v(absl::in_place_index<0>);
1005
+ EXPECT_EQ(0u, v.index());
1006
+ ToValuelessByException(v);
1007
+ EXPECT_EQ(absl::variant_npos, v.index());
1008
+ v = "str";
1009
+ EXPECT_EQ(1u, v.index());
1010
+ }
1011
+
1012
+ TEST(VariantTest, ValuelessByException) {
1013
+ using Var = variant<MoveCanThrow, std::string, double>;
1014
+
1015
+ Var v(absl::in_place_index<0>);
1016
+ EXPECT_FALSE(v.valueless_by_exception());
1017
+ ToValuelessByException(v);
1018
+ EXPECT_TRUE(v.valueless_by_exception());
1019
+ v = "str";
1020
+ EXPECT_FALSE(v.valueless_by_exception());
1021
+ }
1022
+
1023
+ #endif // ABSL_HAVE_EXCEPTIONS
1024
+
1025
+ ////////////////////
1026
+ // [variant.swap] //
1027
+ ////////////////////
1028
+
1029
+ TEST(VariantTest, MemberSwap) {
1030
+ SpecialSwap v1(3);
1031
+ SpecialSwap v2(7);
1032
+
1033
+ variant<SpecialSwap> a = v1, b = v2;
1034
+
1035
+ EXPECT_THAT(a, VariantWith<SpecialSwap>(v1));
1036
+ EXPECT_THAT(b, VariantWith<SpecialSwap>(v2));
1037
+
1038
+ a.swap(b);
1039
+ EXPECT_THAT(a, VariantWith<SpecialSwap>(v2));
1040
+ EXPECT_THAT(b, VariantWith<SpecialSwap>(v1));
1041
+ EXPECT_TRUE(absl::get<SpecialSwap>(a).special_swap);
1042
+
1043
+ using V = variant<MoveCanThrow, std::string, int>;
1044
+ int i = 33;
1045
+ std::string s = "abc";
1046
+ {
1047
+ // lhs and rhs holds different alternative
1048
+ V lhs(i), rhs(s);
1049
+ lhs.swap(rhs);
1050
+ EXPECT_THAT(lhs, VariantWith<std::string>(s));
1051
+ EXPECT_THAT(rhs, VariantWith<int>(i));
1052
+ }
1053
+ #ifdef ABSL_HAVE_EXCEPTIONS
1054
+ V valueless(in_place_index<0>);
1055
+ ToValuelessByException(valueless);
1056
+ {
1057
+ // lhs is valueless
1058
+ V lhs(valueless), rhs(i);
1059
+ lhs.swap(rhs);
1060
+ EXPECT_THAT(lhs, VariantWith<int>(i));
1061
+ EXPECT_TRUE(rhs.valueless_by_exception());
1062
+ }
1063
+ {
1064
+ // rhs is valueless
1065
+ V lhs(s), rhs(valueless);
1066
+ lhs.swap(rhs);
1067
+ EXPECT_THAT(rhs, VariantWith<std::string>(s));
1068
+ EXPECT_TRUE(lhs.valueless_by_exception());
1069
+ }
1070
+ {
1071
+ // both are valueless
1072
+ V lhs(valueless), rhs(valueless);
1073
+ lhs.swap(rhs);
1074
+ EXPECT_TRUE(lhs.valueless_by_exception());
1075
+ EXPECT_TRUE(rhs.valueless_by_exception());
1076
+ }
1077
+ #endif // ABSL_HAVE_EXCEPTIONS
1078
+ }
1079
+
1080
+ //////////////////////
1081
+ // [variant.helper] //
1082
+ //////////////////////
1083
+
1084
+ TEST(VariantTest, VariantSize) {
1085
+ {
1086
+ using Size1Variant = absl::variant<int>;
1087
+ EXPECT_EQ(1u, absl::variant_size<Size1Variant>::value);
1088
+ EXPECT_EQ(1u, absl::variant_size<const Size1Variant>::value);
1089
+ EXPECT_EQ(1u, absl::variant_size<volatile Size1Variant>::value);
1090
+ EXPECT_EQ(1u, absl::variant_size<const volatile Size1Variant>::value);
1091
+ }
1092
+
1093
+ {
1094
+ using Size3Variant = absl::variant<int, float, int>;
1095
+ EXPECT_EQ(3u, absl::variant_size<Size3Variant>::value);
1096
+ EXPECT_EQ(3u, absl::variant_size<const Size3Variant>::value);
1097
+ EXPECT_EQ(3u, absl::variant_size<volatile Size3Variant>::value);
1098
+ EXPECT_EQ(3u, absl::variant_size<const volatile Size3Variant>::value);
1099
+ }
1100
+ }
1101
+
1102
+ TEST(VariantTest, VariantAlternative) {
1103
+ {
1104
+ using V = absl::variant<float, int, const char*>;
1105
+ EXPECT_TRUE(
1106
+ (std::is_same<float, absl::variant_alternative_t<0, V>>::value));
1107
+ EXPECT_TRUE((std::is_same<const float,
1108
+ absl::variant_alternative_t<0, const V>>::value));
1109
+ EXPECT_TRUE(
1110
+ (std::is_same<volatile float,
1111
+ absl::variant_alternative_t<0, volatile V>>::value));
1112
+ EXPECT_TRUE((
1113
+ std::is_same<const volatile float,
1114
+ absl::variant_alternative_t<0, const volatile V>>::value));
1115
+
1116
+ EXPECT_TRUE((std::is_same<int, absl::variant_alternative_t<1, V>>::value));
1117
+ EXPECT_TRUE((std::is_same<const int,
1118
+ absl::variant_alternative_t<1, const V>>::value));
1119
+ EXPECT_TRUE(
1120
+ (std::is_same<volatile int,
1121
+ absl::variant_alternative_t<1, volatile V>>::value));
1122
+ EXPECT_TRUE((
1123
+ std::is_same<const volatile int,
1124
+ absl::variant_alternative_t<1, const volatile V>>::value));
1125
+
1126
+ EXPECT_TRUE(
1127
+ (std::is_same<const char*, absl::variant_alternative_t<2, V>>::value));
1128
+ EXPECT_TRUE((std::is_same<const char* const,
1129
+ absl::variant_alternative_t<2, const V>>::value));
1130
+ EXPECT_TRUE(
1131
+ (std::is_same<const char* volatile,
1132
+ absl::variant_alternative_t<2, volatile V>>::value));
1133
+ EXPECT_TRUE((
1134
+ std::is_same<const char* const volatile,
1135
+ absl::variant_alternative_t<2, const volatile V>>::value));
1136
+ }
1137
+
1138
+ {
1139
+ using V = absl::variant<float, volatile int, const char*>;
1140
+ EXPECT_TRUE(
1141
+ (std::is_same<float, absl::variant_alternative_t<0, V>>::value));
1142
+ EXPECT_TRUE((std::is_same<const float,
1143
+ absl::variant_alternative_t<0, const V>>::value));
1144
+ EXPECT_TRUE(
1145
+ (std::is_same<volatile float,
1146
+ absl::variant_alternative_t<0, volatile V>>::value));
1147
+ EXPECT_TRUE((
1148
+ std::is_same<const volatile float,
1149
+ absl::variant_alternative_t<0, const volatile V>>::value));
1150
+
1151
+ EXPECT_TRUE(
1152
+ (std::is_same<volatile int, absl::variant_alternative_t<1, V>>::value));
1153
+ EXPECT_TRUE((std::is_same<const volatile int,
1154
+ absl::variant_alternative_t<1, const V>>::value));
1155
+ EXPECT_TRUE(
1156
+ (std::is_same<volatile int,
1157
+ absl::variant_alternative_t<1, volatile V>>::value));
1158
+ EXPECT_TRUE((
1159
+ std::is_same<const volatile int,
1160
+ absl::variant_alternative_t<1, const volatile V>>::value));
1161
+
1162
+ EXPECT_TRUE(
1163
+ (std::is_same<const char*, absl::variant_alternative_t<2, V>>::value));
1164
+ EXPECT_TRUE((std::is_same<const char* const,
1165
+ absl::variant_alternative_t<2, const V>>::value));
1166
+ EXPECT_TRUE(
1167
+ (std::is_same<const char* volatile,
1168
+ absl::variant_alternative_t<2, volatile V>>::value));
1169
+ EXPECT_TRUE((
1170
+ std::is_same<const char* const volatile,
1171
+ absl::variant_alternative_t<2, const volatile V>>::value));
1172
+ }
1173
+ }
1174
+
1175
+ ///////////////////
1176
+ // [variant.get] //
1177
+ ///////////////////
1178
+
1179
+ TEST(VariantTest, HoldsAlternative) {
1180
+ using Var = variant<int, std::string, double>;
1181
+
1182
+ Var v = 1;
1183
+ EXPECT_TRUE(absl::holds_alternative<int>(v));
1184
+ EXPECT_FALSE(absl::holds_alternative<std::string>(v));
1185
+ EXPECT_FALSE(absl::holds_alternative<double>(v));
1186
+ v = "str";
1187
+ EXPECT_FALSE(absl::holds_alternative<int>(v));
1188
+ EXPECT_TRUE(absl::holds_alternative<std::string>(v));
1189
+ EXPECT_FALSE(absl::holds_alternative<double>(v));
1190
+ v = 0.;
1191
+ EXPECT_FALSE(absl::holds_alternative<int>(v));
1192
+ EXPECT_FALSE(absl::holds_alternative<std::string>(v));
1193
+ EXPECT_TRUE(absl::holds_alternative<double>(v));
1194
+
1195
+ Var v2 = v;
1196
+ EXPECT_FALSE(absl::holds_alternative<int>(v2));
1197
+ EXPECT_FALSE(absl::holds_alternative<std::string>(v2));
1198
+ EXPECT_TRUE(absl::holds_alternative<double>(v2));
1199
+ v2.emplace<int>(3);
1200
+ EXPECT_TRUE(absl::holds_alternative<int>(v2));
1201
+ EXPECT_FALSE(absl::holds_alternative<std::string>(v2));
1202
+ EXPECT_FALSE(absl::holds_alternative<double>(v2));
1203
+ }
1204
+
1205
+ TEST(VariantTest, GetIndex) {
1206
+ using Var = variant<int, std::string, double, int>;
1207
+
1208
+ {
1209
+ Var v(absl::in_place_index<0>, 0);
1210
+
1211
+ using LValueGetType = decltype(absl::get<0>(v));
1212
+ using RValueGetType = decltype(absl::get<0>(absl::move(v)));
1213
+
1214
+ EXPECT_TRUE((std::is_same<LValueGetType, int&>::value));
1215
+ EXPECT_TRUE((std::is_same<RValueGetType, int&&>::value));
1216
+ EXPECT_EQ(absl::get<0>(v), 0);
1217
+ EXPECT_EQ(absl::get<0>(absl::move(v)), 0);
1218
+
1219
+ const Var& const_v = v;
1220
+ using ConstLValueGetType = decltype(absl::get<0>(const_v));
1221
+ using ConstRValueGetType = decltype(absl::get<0>(absl::move(const_v)));
1222
+ EXPECT_TRUE((std::is_same<ConstLValueGetType, const int&>::value));
1223
+ EXPECT_TRUE((std::is_same<ConstRValueGetType, const int&&>::value));
1224
+ EXPECT_EQ(absl::get<0>(const_v), 0);
1225
+ EXPECT_EQ(absl::get<0>(absl::move(const_v)), 0);
1226
+ }
1227
+
1228
+ {
1229
+ Var v = std::string("Hello");
1230
+
1231
+ using LValueGetType = decltype(absl::get<1>(v));
1232
+ using RValueGetType = decltype(absl::get<1>(absl::move(v)));
1233
+
1234
+ EXPECT_TRUE((std::is_same<LValueGetType, std::string&>::value));
1235
+ EXPECT_TRUE((std::is_same<RValueGetType, std::string&&>::value));
1236
+ EXPECT_EQ(absl::get<1>(v), "Hello");
1237
+ EXPECT_EQ(absl::get<1>(absl::move(v)), "Hello");
1238
+
1239
+ const Var& const_v = v;
1240
+ using ConstLValueGetType = decltype(absl::get<1>(const_v));
1241
+ using ConstRValueGetType = decltype(absl::get<1>(absl::move(const_v)));
1242
+ EXPECT_TRUE((std::is_same<ConstLValueGetType, const std::string&>::value));
1243
+ EXPECT_TRUE((std::is_same<ConstRValueGetType, const std::string&&>::value));
1244
+ EXPECT_EQ(absl::get<1>(const_v), "Hello");
1245
+ EXPECT_EQ(absl::get<1>(absl::move(const_v)), "Hello");
1246
+ }
1247
+
1248
+ {
1249
+ Var v = 2.0;
1250
+
1251
+ using LValueGetType = decltype(absl::get<2>(v));
1252
+ using RValueGetType = decltype(absl::get<2>(absl::move(v)));
1253
+
1254
+ EXPECT_TRUE((std::is_same<LValueGetType, double&>::value));
1255
+ EXPECT_TRUE((std::is_same<RValueGetType, double&&>::value));
1256
+ EXPECT_EQ(absl::get<2>(v), 2.);
1257
+ EXPECT_EQ(absl::get<2>(absl::move(v)), 2.);
1258
+
1259
+ const Var& const_v = v;
1260
+ using ConstLValueGetType = decltype(absl::get<2>(const_v));
1261
+ using ConstRValueGetType = decltype(absl::get<2>(absl::move(const_v)));
1262
+ EXPECT_TRUE((std::is_same<ConstLValueGetType, const double&>::value));
1263
+ EXPECT_TRUE((std::is_same<ConstRValueGetType, const double&&>::value));
1264
+ EXPECT_EQ(absl::get<2>(const_v), 2.);
1265
+ EXPECT_EQ(absl::get<2>(absl::move(const_v)), 2.);
1266
+ }
1267
+
1268
+ {
1269
+ Var v(absl::in_place_index<0>, 0);
1270
+ v.emplace<3>(1);
1271
+
1272
+ using LValueGetType = decltype(absl::get<3>(v));
1273
+ using RValueGetType = decltype(absl::get<3>(absl::move(v)));
1274
+
1275
+ EXPECT_TRUE((std::is_same<LValueGetType, int&>::value));
1276
+ EXPECT_TRUE((std::is_same<RValueGetType, int&&>::value));
1277
+ EXPECT_EQ(absl::get<3>(v), 1);
1278
+ EXPECT_EQ(absl::get<3>(absl::move(v)), 1);
1279
+
1280
+ const Var& const_v = v;
1281
+ using ConstLValueGetType = decltype(absl::get<3>(const_v));
1282
+ using ConstRValueGetType = decltype(absl::get<3>(absl::move(const_v)));
1283
+ EXPECT_TRUE((std::is_same<ConstLValueGetType, const int&>::value));
1284
+ EXPECT_TRUE((std::is_same<ConstRValueGetType, const int&&>::value));
1285
+ EXPECT_EQ(absl::get<3>(const_v), 1);
1286
+ EXPECT_EQ(absl::get<3>(absl::move(const_v)), 1); // NOLINT
1287
+ }
1288
+ }
1289
+
1290
+ TEST(VariantTest, BadGetIndex) {
1291
+ using Var = variant<int, std::string, double>;
1292
+
1293
+ {
1294
+ Var v = 1;
1295
+
1296
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<1>(v));
1297
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<1>(std::move(v)));
1298
+
1299
+ const Var& const_v = v;
1300
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<1>(const_v));
1301
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(
1302
+ absl::get<1>(std::move(const_v))); // NOLINT
1303
+ }
1304
+
1305
+ {
1306
+ Var v = std::string("Hello");
1307
+
1308
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<0>(v));
1309
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<0>(std::move(v)));
1310
+
1311
+ const Var& const_v = v;
1312
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<0>(const_v));
1313
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(
1314
+ absl::get<0>(std::move(const_v))); // NOLINT
1315
+ }
1316
+ }
1317
+
1318
+ TEST(VariantTest, GetType) {
1319
+ using Var = variant<int, std::string, double>;
1320
+
1321
+ {
1322
+ Var v = 1;
1323
+
1324
+ using LValueGetType = decltype(absl::get<int>(v));
1325
+ using RValueGetType = decltype(absl::get<int>(absl::move(v)));
1326
+
1327
+ EXPECT_TRUE((std::is_same<LValueGetType, int&>::value));
1328
+ EXPECT_TRUE((std::is_same<RValueGetType, int&&>::value));
1329
+ EXPECT_EQ(absl::get<int>(v), 1);
1330
+ EXPECT_EQ(absl::get<int>(absl::move(v)), 1);
1331
+
1332
+ const Var& const_v = v;
1333
+ using ConstLValueGetType = decltype(absl::get<int>(const_v));
1334
+ using ConstRValueGetType = decltype(absl::get<int>(absl::move(const_v)));
1335
+ EXPECT_TRUE((std::is_same<ConstLValueGetType, const int&>::value));
1336
+ EXPECT_TRUE((std::is_same<ConstRValueGetType, const int&&>::value));
1337
+ EXPECT_EQ(absl::get<int>(const_v), 1);
1338
+ EXPECT_EQ(absl::get<int>(absl::move(const_v)), 1);
1339
+ }
1340
+
1341
+ {
1342
+ Var v = std::string("Hello");
1343
+
1344
+ using LValueGetType = decltype(absl::get<1>(v));
1345
+ using RValueGetType = decltype(absl::get<1>(absl::move(v)));
1346
+
1347
+ EXPECT_TRUE((std::is_same<LValueGetType, std::string&>::value));
1348
+ EXPECT_TRUE((std::is_same<RValueGetType, std::string&&>::value));
1349
+ EXPECT_EQ(absl::get<std::string>(v), "Hello");
1350
+ EXPECT_EQ(absl::get<std::string>(absl::move(v)), "Hello");
1351
+
1352
+ const Var& const_v = v;
1353
+ using ConstLValueGetType = decltype(absl::get<1>(const_v));
1354
+ using ConstRValueGetType = decltype(absl::get<1>(absl::move(const_v)));
1355
+ EXPECT_TRUE((std::is_same<ConstLValueGetType, const std::string&>::value));
1356
+ EXPECT_TRUE((std::is_same<ConstRValueGetType, const std::string&&>::value));
1357
+ EXPECT_EQ(absl::get<std::string>(const_v), "Hello");
1358
+ EXPECT_EQ(absl::get<std::string>(absl::move(const_v)), "Hello");
1359
+ }
1360
+
1361
+ {
1362
+ Var v = 2.0;
1363
+
1364
+ using LValueGetType = decltype(absl::get<2>(v));
1365
+ using RValueGetType = decltype(absl::get<2>(absl::move(v)));
1366
+
1367
+ EXPECT_TRUE((std::is_same<LValueGetType, double&>::value));
1368
+ EXPECT_TRUE((std::is_same<RValueGetType, double&&>::value));
1369
+ EXPECT_EQ(absl::get<double>(v), 2.);
1370
+ EXPECT_EQ(absl::get<double>(absl::move(v)), 2.);
1371
+
1372
+ const Var& const_v = v;
1373
+ using ConstLValueGetType = decltype(absl::get<2>(const_v));
1374
+ using ConstRValueGetType = decltype(absl::get<2>(absl::move(const_v)));
1375
+ EXPECT_TRUE((std::is_same<ConstLValueGetType, const double&>::value));
1376
+ EXPECT_TRUE((std::is_same<ConstRValueGetType, const double&&>::value));
1377
+ EXPECT_EQ(absl::get<double>(const_v), 2.);
1378
+ EXPECT_EQ(absl::get<double>(absl::move(const_v)), 2.);
1379
+ }
1380
+ }
1381
+
1382
+ TEST(VariantTest, BadGetType) {
1383
+ using Var = variant<int, std::string, double>;
1384
+
1385
+ {
1386
+ Var v = 1;
1387
+
1388
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<std::string>(v));
1389
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(
1390
+ absl::get<std::string>(std::move(v)));
1391
+
1392
+ const Var& const_v = v;
1393
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(
1394
+ absl::get<std::string>(const_v));
1395
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(
1396
+ absl::get<std::string>(std::move(const_v))); // NOLINT
1397
+ }
1398
+
1399
+ {
1400
+ Var v = std::string("Hello");
1401
+
1402
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<int>(v));
1403
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<int>(std::move(v)));
1404
+
1405
+ const Var& const_v = v;
1406
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(absl::get<int>(const_v));
1407
+ ABSL_VARIANT_TEST_EXPECT_BAD_VARIANT_ACCESS(
1408
+ absl::get<int>(std::move(const_v))); // NOLINT
1409
+ }
1410
+ }
1411
+
1412
+ TEST(VariantTest, GetIfIndex) {
1413
+ using Var = variant<int, std::string, double, int>;
1414
+
1415
+ {
1416
+ Var v(absl::in_place_index<0>, 0);
1417
+ EXPECT_TRUE(noexcept(absl::get_if<0>(&v)));
1418
+
1419
+ {
1420
+ auto* elem = absl::get_if<0>(&v);
1421
+ EXPECT_TRUE((std::is_same<decltype(elem), int*>::value));
1422
+ ASSERT_NE(elem, nullptr);
1423
+ EXPECT_EQ(*elem, 0);
1424
+ {
1425
+ auto* bad_elem = absl::get_if<1>(&v);
1426
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), std::string*>::value));
1427
+ EXPECT_EQ(bad_elem, nullptr);
1428
+ }
1429
+ {
1430
+ auto* bad_elem = absl::get_if<2>(&v);
1431
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), double*>::value));
1432
+ EXPECT_EQ(bad_elem, nullptr);
1433
+ }
1434
+ {
1435
+ auto* bad_elem = absl::get_if<3>(&v);
1436
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), int*>::value));
1437
+ EXPECT_EQ(bad_elem, nullptr);
1438
+ }
1439
+ }
1440
+
1441
+ const Var& const_v = v;
1442
+ EXPECT_TRUE(noexcept(absl::get_if<0>(&const_v)));
1443
+
1444
+ {
1445
+ auto* elem = absl::get_if<0>(&const_v);
1446
+ EXPECT_TRUE((std::is_same<decltype(elem), const int*>::value));
1447
+ ASSERT_NE(elem, nullptr);
1448
+ EXPECT_EQ(*elem, 0);
1449
+ {
1450
+ auto* bad_elem = absl::get_if<1>(&const_v);
1451
+ EXPECT_TRUE(
1452
+ (std::is_same<decltype(bad_elem), const std::string*>::value));
1453
+ EXPECT_EQ(bad_elem, nullptr);
1454
+ }
1455
+ {
1456
+ auto* bad_elem = absl::get_if<2>(&const_v);
1457
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const double*>::value));
1458
+ EXPECT_EQ(bad_elem, nullptr);
1459
+ }
1460
+ {
1461
+ auto* bad_elem = absl::get_if<3>(&const_v);
1462
+ EXPECT_EQ(bad_elem, nullptr);
1463
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const int*>::value));
1464
+ }
1465
+ }
1466
+ }
1467
+
1468
+ {
1469
+ Var v = std::string("Hello");
1470
+ EXPECT_TRUE(noexcept(absl::get_if<1>(&v)));
1471
+
1472
+ {
1473
+ auto* elem = absl::get_if<1>(&v);
1474
+ EXPECT_TRUE((std::is_same<decltype(elem), std::string*>::value));
1475
+ ASSERT_NE(elem, nullptr);
1476
+ EXPECT_EQ(*elem, "Hello");
1477
+ {
1478
+ auto* bad_elem = absl::get_if<0>(&v);
1479
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), int*>::value));
1480
+ EXPECT_EQ(bad_elem, nullptr);
1481
+ }
1482
+ {
1483
+ auto* bad_elem = absl::get_if<2>(&v);
1484
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), double*>::value));
1485
+ EXPECT_EQ(bad_elem, nullptr);
1486
+ }
1487
+ {
1488
+ auto* bad_elem = absl::get_if<3>(&v);
1489
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), int*>::value));
1490
+ EXPECT_EQ(bad_elem, nullptr);
1491
+ }
1492
+ }
1493
+
1494
+ const Var& const_v = v;
1495
+ EXPECT_TRUE(noexcept(absl::get_if<1>(&const_v)));
1496
+
1497
+ {
1498
+ auto* elem = absl::get_if<1>(&const_v);
1499
+ EXPECT_TRUE((std::is_same<decltype(elem), const std::string*>::value));
1500
+ ASSERT_NE(elem, nullptr);
1501
+ EXPECT_EQ(*elem, "Hello");
1502
+ {
1503
+ auto* bad_elem = absl::get_if<0>(&const_v);
1504
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const int*>::value));
1505
+ EXPECT_EQ(bad_elem, nullptr);
1506
+ }
1507
+ {
1508
+ auto* bad_elem = absl::get_if<2>(&const_v);
1509
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const double*>::value));
1510
+ EXPECT_EQ(bad_elem, nullptr);
1511
+ }
1512
+ {
1513
+ auto* bad_elem = absl::get_if<3>(&const_v);
1514
+ EXPECT_EQ(bad_elem, nullptr);
1515
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const int*>::value));
1516
+ }
1517
+ }
1518
+ }
1519
+
1520
+ {
1521
+ Var v = 2.0;
1522
+ EXPECT_TRUE(noexcept(absl::get_if<2>(&v)));
1523
+
1524
+ {
1525
+ auto* elem = absl::get_if<2>(&v);
1526
+ EXPECT_TRUE((std::is_same<decltype(elem), double*>::value));
1527
+ ASSERT_NE(elem, nullptr);
1528
+ EXPECT_EQ(*elem, 2.0);
1529
+ {
1530
+ auto* bad_elem = absl::get_if<0>(&v);
1531
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), int*>::value));
1532
+ EXPECT_EQ(bad_elem, nullptr);
1533
+ }
1534
+ {
1535
+ auto* bad_elem = absl::get_if<1>(&v);
1536
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), std::string*>::value));
1537
+ EXPECT_EQ(bad_elem, nullptr);
1538
+ }
1539
+ {
1540
+ auto* bad_elem = absl::get_if<3>(&v);
1541
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), int*>::value));
1542
+ EXPECT_EQ(bad_elem, nullptr);
1543
+ }
1544
+ }
1545
+
1546
+ const Var& const_v = v;
1547
+ EXPECT_TRUE(noexcept(absl::get_if<2>(&const_v)));
1548
+
1549
+ {
1550
+ auto* elem = absl::get_if<2>(&const_v);
1551
+ EXPECT_TRUE((std::is_same<decltype(elem), const double*>::value));
1552
+ ASSERT_NE(elem, nullptr);
1553
+ EXPECT_EQ(*elem, 2.0);
1554
+ {
1555
+ auto* bad_elem = absl::get_if<0>(&const_v);
1556
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const int*>::value));
1557
+ EXPECT_EQ(bad_elem, nullptr);
1558
+ }
1559
+ {
1560
+ auto* bad_elem = absl::get_if<1>(&const_v);
1561
+ EXPECT_TRUE(
1562
+ (std::is_same<decltype(bad_elem), const std::string*>::value));
1563
+ EXPECT_EQ(bad_elem, nullptr);
1564
+ }
1565
+ {
1566
+ auto* bad_elem = absl::get_if<3>(&const_v);
1567
+ EXPECT_EQ(bad_elem, nullptr);
1568
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const int*>::value));
1569
+ }
1570
+ }
1571
+ }
1572
+
1573
+ {
1574
+ Var v(absl::in_place_index<0>, 0);
1575
+ v.emplace<3>(1);
1576
+ EXPECT_TRUE(noexcept(absl::get_if<3>(&v)));
1577
+
1578
+ {
1579
+ auto* elem = absl::get_if<3>(&v);
1580
+ EXPECT_TRUE((std::is_same<decltype(elem), int*>::value));
1581
+ ASSERT_NE(elem, nullptr);
1582
+ EXPECT_EQ(*elem, 1);
1583
+ {
1584
+ auto* bad_elem = absl::get_if<0>(&v);
1585
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), int*>::value));
1586
+ EXPECT_EQ(bad_elem, nullptr);
1587
+ }
1588
+ {
1589
+ auto* bad_elem = absl::get_if<1>(&v);
1590
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), std::string*>::value));
1591
+ EXPECT_EQ(bad_elem, nullptr);
1592
+ }
1593
+ {
1594
+ auto* bad_elem = absl::get_if<2>(&v);
1595
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), double*>::value));
1596
+ EXPECT_EQ(bad_elem, nullptr);
1597
+ }
1598
+ }
1599
+
1600
+ const Var& const_v = v;
1601
+ EXPECT_TRUE(noexcept(absl::get_if<3>(&const_v)));
1602
+
1603
+ {
1604
+ auto* elem = absl::get_if<3>(&const_v);
1605
+ EXPECT_TRUE((std::is_same<decltype(elem), const int*>::value));
1606
+ ASSERT_NE(elem, nullptr);
1607
+ EXPECT_EQ(*elem, 1);
1608
+ {
1609
+ auto* bad_elem = absl::get_if<0>(&const_v);
1610
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const int*>::value));
1611
+ EXPECT_EQ(bad_elem, nullptr);
1612
+ }
1613
+ {
1614
+ auto* bad_elem = absl::get_if<1>(&const_v);
1615
+ EXPECT_TRUE(
1616
+ (std::is_same<decltype(bad_elem), const std::string*>::value));
1617
+ EXPECT_EQ(bad_elem, nullptr);
1618
+ }
1619
+ {
1620
+ auto* bad_elem = absl::get_if<2>(&const_v);
1621
+ EXPECT_EQ(bad_elem, nullptr);
1622
+ EXPECT_TRUE((std::is_same<decltype(bad_elem), const double*>::value));
1623
+ }
1624
+ }
1625
+ }
1626
+ }
1627
+
1628
+ //////////////////////
1629
+ // [variant.relops] //
1630
+ //////////////////////
1631
+
1632
+ TEST(VariantTest, OperatorEquals) {
1633
+ variant<int, std::string> a(1), b(1);
1634
+ EXPECT_TRUE(a == b);
1635
+ EXPECT_TRUE(b == a);
1636
+ EXPECT_FALSE(a != b);
1637
+ EXPECT_FALSE(b != a);
1638
+
1639
+ b = "str";
1640
+ EXPECT_FALSE(a == b);
1641
+ EXPECT_FALSE(b == a);
1642
+ EXPECT_TRUE(a != b);
1643
+ EXPECT_TRUE(b != a);
1644
+
1645
+ b = 0;
1646
+ EXPECT_FALSE(a == b);
1647
+ EXPECT_FALSE(b == a);
1648
+ EXPECT_TRUE(a != b);
1649
+ EXPECT_TRUE(b != a);
1650
+
1651
+ a = b = "foo";
1652
+ EXPECT_TRUE(a == b);
1653
+ EXPECT_TRUE(b == a);
1654
+ EXPECT_FALSE(a != b);
1655
+ EXPECT_FALSE(b != a);
1656
+
1657
+ a = "bar";
1658
+ EXPECT_FALSE(a == b);
1659
+ EXPECT_FALSE(b == a);
1660
+ EXPECT_TRUE(a != b);
1661
+ EXPECT_TRUE(b != a);
1662
+ }
1663
+
1664
+ TEST(VariantTest, OperatorRelational) {
1665
+ variant<int, std::string> a(1), b(1);
1666
+ EXPECT_FALSE(a < b);
1667
+ EXPECT_FALSE(b < a);
1668
+ EXPECT_FALSE(a > b);
1669
+ EXPECT_FALSE(b > a);
1670
+ EXPECT_TRUE(a <= b);
1671
+ EXPECT_TRUE(b <= a);
1672
+ EXPECT_TRUE(a >= b);
1673
+ EXPECT_TRUE(b >= a);
1674
+
1675
+ b = "str";
1676
+ EXPECT_TRUE(a < b);
1677
+ EXPECT_FALSE(b < a);
1678
+ EXPECT_FALSE(a > b);
1679
+ EXPECT_TRUE(b > a);
1680
+ EXPECT_TRUE(a <= b);
1681
+ EXPECT_FALSE(b <= a);
1682
+ EXPECT_FALSE(a >= b);
1683
+ EXPECT_TRUE(b >= a);
1684
+
1685
+ b = 0;
1686
+ EXPECT_FALSE(a < b);
1687
+ EXPECT_TRUE(b < a);
1688
+ EXPECT_TRUE(a > b);
1689
+ EXPECT_FALSE(b > a);
1690
+ EXPECT_FALSE(a <= b);
1691
+ EXPECT_TRUE(b <= a);
1692
+ EXPECT_TRUE(a >= b);
1693
+ EXPECT_FALSE(b >= a);
1694
+
1695
+ a = b = "foo";
1696
+ EXPECT_FALSE(a < b);
1697
+ EXPECT_FALSE(b < a);
1698
+ EXPECT_FALSE(a > b);
1699
+ EXPECT_FALSE(b > a);
1700
+ EXPECT_TRUE(a <= b);
1701
+ EXPECT_TRUE(b <= a);
1702
+ EXPECT_TRUE(a >= b);
1703
+ EXPECT_TRUE(b >= a);
1704
+
1705
+ a = "bar";
1706
+ EXPECT_TRUE(a < b);
1707
+ EXPECT_FALSE(b < a);
1708
+ EXPECT_FALSE(a > b);
1709
+ EXPECT_TRUE(b > a);
1710
+ EXPECT_TRUE(a <= b);
1711
+ EXPECT_FALSE(b <= a);
1712
+ EXPECT_FALSE(a >= b);
1713
+ EXPECT_TRUE(b >= a);
1714
+ }
1715
+
1716
+ #ifdef ABSL_HAVE_EXCEPTIONS
1717
+
1718
+ TEST(VariantTest, ValuelessOperatorEquals) {
1719
+ variant<MoveCanThrow, std::string> int_v(1), string_v("Hello"),
1720
+ valueless(absl::in_place_index<0>),
1721
+ other_valueless(absl::in_place_index<0>);
1722
+ ToValuelessByException(valueless);
1723
+ ToValuelessByException(other_valueless);
1724
+
1725
+ EXPECT_TRUE(valueless == other_valueless);
1726
+ EXPECT_TRUE(other_valueless == valueless);
1727
+ EXPECT_FALSE(valueless == int_v);
1728
+ EXPECT_FALSE(valueless == string_v);
1729
+ EXPECT_FALSE(int_v == valueless);
1730
+ EXPECT_FALSE(string_v == valueless);
1731
+
1732
+ EXPECT_FALSE(valueless != other_valueless);
1733
+ EXPECT_FALSE(other_valueless != valueless);
1734
+ EXPECT_TRUE(valueless != int_v);
1735
+ EXPECT_TRUE(valueless != string_v);
1736
+ EXPECT_TRUE(int_v != valueless);
1737
+ EXPECT_TRUE(string_v != valueless);
1738
+ }
1739
+
1740
+ TEST(VariantTest, ValuelessOperatorRelational) {
1741
+ variant<MoveCanThrow, std::string> int_v(1), string_v("Hello"),
1742
+ valueless(absl::in_place_index<0>),
1743
+ other_valueless(absl::in_place_index<0>);
1744
+ ToValuelessByException(valueless);
1745
+ ToValuelessByException(other_valueless);
1746
+
1747
+ EXPECT_FALSE(valueless < other_valueless);
1748
+ EXPECT_FALSE(other_valueless < valueless);
1749
+ EXPECT_TRUE(valueless < int_v);
1750
+ EXPECT_TRUE(valueless < string_v);
1751
+ EXPECT_FALSE(int_v < valueless);
1752
+ EXPECT_FALSE(string_v < valueless);
1753
+
1754
+ EXPECT_TRUE(valueless <= other_valueless);
1755
+ EXPECT_TRUE(other_valueless <= valueless);
1756
+ EXPECT_TRUE(valueless <= int_v);
1757
+ EXPECT_TRUE(valueless <= string_v);
1758
+ EXPECT_FALSE(int_v <= valueless);
1759
+ EXPECT_FALSE(string_v <= valueless);
1760
+
1761
+ EXPECT_TRUE(valueless >= other_valueless);
1762
+ EXPECT_TRUE(other_valueless >= valueless);
1763
+ EXPECT_FALSE(valueless >= int_v);
1764
+ EXPECT_FALSE(valueless >= string_v);
1765
+ EXPECT_TRUE(int_v >= valueless);
1766
+ EXPECT_TRUE(string_v >= valueless);
1767
+
1768
+ EXPECT_FALSE(valueless > other_valueless);
1769
+ EXPECT_FALSE(other_valueless > valueless);
1770
+ EXPECT_FALSE(valueless > int_v);
1771
+ EXPECT_FALSE(valueless > string_v);
1772
+ EXPECT_TRUE(int_v > valueless);
1773
+ EXPECT_TRUE(string_v > valueless);
1774
+ }
1775
+
1776
+ #endif
1777
+
1778
+ /////////////////////
1779
+ // [variant.visit] //
1780
+ /////////////////////
1781
+
1782
+ template <typename T>
1783
+ struct ConvertTo {
1784
+ template <typename U>
1785
+ T operator()(const U& u) const {
1786
+ return u;
1787
+ }
1788
+ };
1789
+
1790
+ TEST(VariantTest, VisitSimple) {
1791
+ variant<std::string, const char*> v = "A";
1792
+
1793
+ std::string str = absl::visit(ConvertTo<std::string>{}, v);
1794
+ EXPECT_EQ("A", str);
1795
+
1796
+ v = std::string("B");
1797
+
1798
+ absl::string_view piece = absl::visit(ConvertTo<absl::string_view>{}, v);
1799
+ EXPECT_EQ("B", piece);
1800
+
1801
+ struct StrLen {
1802
+ size_t operator()(const char* s) const { return strlen(s); }
1803
+ size_t operator()(const std::string& s) const { return s.size(); }
1804
+ };
1805
+
1806
+ v = "SomeStr";
1807
+ EXPECT_EQ(7u, absl::visit(StrLen{}, v));
1808
+ v = std::string("VeryLargeThisTime");
1809
+ EXPECT_EQ(17u, absl::visit(StrLen{}, v));
1810
+ }
1811
+
1812
+ TEST(VariantTest, VisitRValue) {
1813
+ variant<std::string> v = std::string("X");
1814
+ struct Visitor {
1815
+ bool operator()(const std::string&) const { return false; }
1816
+ bool operator()(std::string&&) const { return true; } // NOLINT
1817
+
1818
+ int operator()(const std::string&, const std::string&) const { return 0; }
1819
+ int operator()(const std::string&, std::string&&) const {
1820
+ return 1;
1821
+ } // NOLINT
1822
+ int operator()(std::string&&, const std::string&) const {
1823
+ return 2;
1824
+ } // NOLINT
1825
+ int operator()(std::string&&, std::string&&) const { return 3; } // NOLINT
1826
+ };
1827
+ EXPECT_FALSE(absl::visit(Visitor{}, v));
1828
+ EXPECT_TRUE(absl::visit(Visitor{}, absl::move(v)));
1829
+
1830
+ // Also test the variadic overload.
1831
+ EXPECT_EQ(0, absl::visit(Visitor{}, v, v));
1832
+ EXPECT_EQ(1, absl::visit(Visitor{}, v, absl::move(v)));
1833
+ EXPECT_EQ(2, absl::visit(Visitor{}, absl::move(v), v));
1834
+ EXPECT_EQ(3, absl::visit(Visitor{}, absl::move(v), absl::move(v)));
1835
+ }
1836
+
1837
+ TEST(VariantTest, VisitRValueVisitor) {
1838
+ variant<std::string> v = std::string("X");
1839
+ struct Visitor {
1840
+ bool operator()(const std::string&) const& { return false; }
1841
+ bool operator()(const std::string&) && { return true; }
1842
+ };
1843
+ Visitor visitor;
1844
+ EXPECT_FALSE(absl::visit(visitor, v));
1845
+ EXPECT_TRUE(absl::visit(Visitor{}, v));
1846
+ }
1847
+
1848
+ TEST(VariantTest, VisitResultTypeDifferent) {
1849
+ variant<std::string> v = std::string("X");
1850
+ struct LValue_LValue {};
1851
+ struct RValue_LValue {};
1852
+ struct LValue_RValue {};
1853
+ struct RValue_RValue {};
1854
+ struct Visitor {
1855
+ LValue_LValue operator()(const std::string&) const& { return {}; }
1856
+ RValue_LValue operator()(std::string&&) const& { return {}; } // NOLINT
1857
+ LValue_RValue operator()(const std::string&) && { return {}; }
1858
+ RValue_RValue operator()(std::string&&) && { return {}; } // NOLINT
1859
+ } visitor;
1860
+
1861
+ EXPECT_TRUE(
1862
+ (std::is_same<LValue_LValue, decltype(absl::visit(visitor, v))>::value));
1863
+ EXPECT_TRUE(
1864
+ (std::is_same<RValue_LValue,
1865
+ decltype(absl::visit(visitor, absl::move(v)))>::value));
1866
+ EXPECT_TRUE((
1867
+ std::is_same<LValue_RValue, decltype(absl::visit(Visitor{}, v))>::value));
1868
+ EXPECT_TRUE(
1869
+ (std::is_same<RValue_RValue,
1870
+ decltype(absl::visit(Visitor{}, absl::move(v)))>::value));
1871
+ }
1872
+
1873
+ TEST(VariantTest, VisitVariadic) {
1874
+ using A = variant<int, std::string>;
1875
+ using B = variant<std::unique_ptr<int>, absl::string_view>;
1876
+
1877
+ struct Visitor {
1878
+ std::pair<int, int> operator()(int a, std::unique_ptr<int> b) const {
1879
+ return {a, *b};
1880
+ }
1881
+ std::pair<int, int> operator()(absl::string_view a,
1882
+ std::unique_ptr<int> b) const {
1883
+ return {static_cast<int>(a.size()), static_cast<int>(*b)};
1884
+ }
1885
+ std::pair<int, int> operator()(int a, absl::string_view b) const {
1886
+ return {a, static_cast<int>(b.size())};
1887
+ }
1888
+ std::pair<int, int> operator()(absl::string_view a,
1889
+ absl::string_view b) const {
1890
+ return {static_cast<int>(a.size()), static_cast<int>(b.size())};
1891
+ }
1892
+ };
1893
+
1894
+ EXPECT_THAT(absl::visit(Visitor(), A(1), B(std::unique_ptr<int>(new int(7)))),
1895
+ ::testing::Pair(1, 7));
1896
+ EXPECT_THAT(absl::visit(Visitor(), A(1), B(absl::string_view("ABC"))),
1897
+ ::testing::Pair(1, 3));
1898
+ EXPECT_THAT(absl::visit(Visitor(), A(std::string("BBBBB")),
1899
+ B(std::unique_ptr<int>(new int(7)))),
1900
+ ::testing::Pair(5, 7));
1901
+ EXPECT_THAT(absl::visit(Visitor(), A(std::string("BBBBB")),
1902
+ B(absl::string_view("ABC"))),
1903
+ ::testing::Pair(5, 3));
1904
+ }
1905
+
1906
+ TEST(VariantTest, VisitNoArgs) {
1907
+ EXPECT_EQ(5, absl::visit([] { return 5; }));
1908
+ }
1909
+
1910
+ struct ConstFunctor {
1911
+ int operator()(int a, int b) const { return a - b; }
1912
+ };
1913
+
1914
+ struct MutableFunctor {
1915
+ int operator()(int a, int b) { return a - b; }
1916
+ };
1917
+
1918
+ struct Class {
1919
+ int Method(int a, int b) { return a - b; }
1920
+ int ConstMethod(int a, int b) const { return a - b; }
1921
+
1922
+ int member;
1923
+ };
1924
+
1925
+ TEST(VariantTest, VisitReferenceWrapper) {
1926
+ ConstFunctor cf;
1927
+ MutableFunctor mf;
1928
+ absl::variant<int> three = 3;
1929
+ absl::variant<int> two = 2;
1930
+
1931
+ EXPECT_EQ(1, absl::visit(std::cref(cf), three, two));
1932
+ EXPECT_EQ(1, absl::visit(std::ref(cf), three, two));
1933
+ EXPECT_EQ(1, absl::visit(std::ref(mf), three, two));
1934
+ }
1935
+
1936
+ // libstdc++ std::variant doesn't support the INVOKE semantics.
1937
+ #if !(defined(ABSL_USES_STD_VARIANT) && defined(__GLIBCXX__))
1938
+ TEST(VariantTest, VisitMemberFunction) {
1939
+ absl::variant<std::unique_ptr<Class>> p(absl::make_unique<Class>());
1940
+ absl::variant<std::unique_ptr<const Class>> cp(
1941
+ absl::make_unique<const Class>());
1942
+ absl::variant<int> three = 3;
1943
+ absl::variant<int> two = 2;
1944
+
1945
+ EXPECT_EQ(1, absl::visit(&Class::Method, p, three, two));
1946
+ EXPECT_EQ(1, absl::visit(&Class::ConstMethod, p, three, two));
1947
+ EXPECT_EQ(1, absl::visit(&Class::ConstMethod, cp, three, two));
1948
+ }
1949
+
1950
+ TEST(VariantTest, VisitDataMember) {
1951
+ absl::variant<std::unique_ptr<Class>> p(absl::make_unique<Class>(Class{42}));
1952
+ absl::variant<std::unique_ptr<const Class>> cp(
1953
+ absl::make_unique<const Class>(Class{42}));
1954
+ EXPECT_EQ(42, absl::visit(&Class::member, p));
1955
+
1956
+ absl::visit(&Class::member, p) = 5;
1957
+ EXPECT_EQ(5, absl::visit(&Class::member, p));
1958
+
1959
+ EXPECT_EQ(42, absl::visit(&Class::member, cp));
1960
+ }
1961
+ #endif // !(defined(ABSL_USES_STD_VARIANT) && defined(__GLIBCXX__))
1962
+
1963
+ /////////////////////////
1964
+ // [variant.monostate] //
1965
+ /////////////////////////
1966
+
1967
+ TEST(VariantTest, MonostateBasic) {
1968
+ absl::monostate mono;
1969
+ (void)mono;
1970
+
1971
+ // TODO(mattcalabrese) Expose move triviality metafunctions in absl.
1972
+ EXPECT_TRUE(absl::is_trivially_default_constructible<absl::monostate>::value);
1973
+ EXPECT_TRUE(is_trivially_move_constructible<absl::monostate>::value);
1974
+ EXPECT_TRUE(absl::is_trivially_copy_constructible<absl::monostate>::value);
1975
+ EXPECT_TRUE(is_trivially_move_assignable<absl::monostate>::value);
1976
+ EXPECT_TRUE(absl::is_trivially_copy_assignable<absl::monostate>::value);
1977
+ EXPECT_TRUE(absl::is_trivially_destructible<absl::monostate>::value);
1978
+ }
1979
+
1980
+ TEST(VariantTest, VariantMonostateDefaultConstruction) {
1981
+ absl::variant<absl::monostate, NonDefaultConstructible> var;
1982
+ EXPECT_EQ(var.index(), 0u);
1983
+ }
1984
+
1985
+ ////////////////////////////////
1986
+ // [variant.monostate.relops] //
1987
+ ////////////////////////////////
1988
+
1989
+ TEST(VariantTest, MonostateComparisons) {
1990
+ absl::monostate lhs, rhs;
1991
+
1992
+ EXPECT_EQ(lhs, lhs);
1993
+ EXPECT_EQ(lhs, rhs);
1994
+
1995
+ EXPECT_FALSE(lhs != lhs);
1996
+ EXPECT_FALSE(lhs != rhs);
1997
+ EXPECT_FALSE(lhs < lhs);
1998
+ EXPECT_FALSE(lhs < rhs);
1999
+ EXPECT_FALSE(lhs > lhs);
2000
+ EXPECT_FALSE(lhs > rhs);
2001
+
2002
+ EXPECT_LE(lhs, lhs);
2003
+ EXPECT_LE(lhs, rhs);
2004
+ EXPECT_GE(lhs, lhs);
2005
+ EXPECT_GE(lhs, rhs);
2006
+
2007
+ EXPECT_TRUE(noexcept(std::declval<absl::monostate>() ==
2008
+ std::declval<absl::monostate>()));
2009
+ EXPECT_TRUE(noexcept(std::declval<absl::monostate>() !=
2010
+ std::declval<absl::monostate>()));
2011
+ EXPECT_TRUE(noexcept(std::declval<absl::monostate>() <
2012
+ std::declval<absl::monostate>()));
2013
+ EXPECT_TRUE(noexcept(std::declval<absl::monostate>() >
2014
+ std::declval<absl::monostate>()));
2015
+ EXPECT_TRUE(noexcept(std::declval<absl::monostate>() <=
2016
+ std::declval<absl::monostate>()));
2017
+ EXPECT_TRUE(noexcept(std::declval<absl::monostate>() >=
2018
+ std::declval<absl::monostate>()));
2019
+ }
2020
+
2021
+ ///////////////////////
2022
+ // [variant.specalg] //
2023
+ ///////////////////////
2024
+
2025
+ TEST(VariantTest, NonmemberSwap) {
2026
+ using std::swap;
2027
+
2028
+ SpecialSwap v1(3);
2029
+ SpecialSwap v2(7);
2030
+
2031
+ variant<SpecialSwap> a = v1, b = v2;
2032
+
2033
+ EXPECT_THAT(a, VariantWith<SpecialSwap>(v1));
2034
+ EXPECT_THAT(b, VariantWith<SpecialSwap>(v2));
2035
+
2036
+ std::swap(a, b);
2037
+ EXPECT_THAT(a, VariantWith<SpecialSwap>(v2));
2038
+ EXPECT_THAT(b, VariantWith<SpecialSwap>(v1));
2039
+ #ifndef ABSL_USES_STD_VARIANT
2040
+ EXPECT_FALSE(absl::get<SpecialSwap>(a).special_swap);
2041
+ #endif
2042
+
2043
+ swap(a, b);
2044
+ EXPECT_THAT(a, VariantWith<SpecialSwap>(v1));
2045
+ EXPECT_THAT(b, VariantWith<SpecialSwap>(v2));
2046
+ EXPECT_TRUE(absl::get<SpecialSwap>(b).special_swap);
2047
+ }
2048
+
2049
+ //////////////////////////
2050
+ // [variant.bad.access] //
2051
+ //////////////////////////
2052
+
2053
+ TEST(VariantTest, BadAccess) {
2054
+ EXPECT_TRUE(noexcept(absl::bad_variant_access()));
2055
+ absl::bad_variant_access exception_obj;
2056
+ std::exception* base = &exception_obj;
2057
+ (void)base;
2058
+ }
2059
+
2060
+ ////////////////////
2061
+ // [variant.hash] //
2062
+ ////////////////////
2063
+
2064
+ TEST(VariantTest, MonostateHash) {
2065
+ absl::monostate mono, other_mono;
2066
+ std::hash<absl::monostate> const hasher{};
2067
+ static_assert(std::is_same<decltype(hasher(mono)), std::size_t>::value, "");
2068
+ EXPECT_EQ(hasher(mono), hasher(other_mono));
2069
+ }
2070
+
2071
+ TEST(VariantTest, Hash) {
2072
+ static_assert(type_traits_internal::IsHashable<variant<int>>::value, "");
2073
+ static_assert(type_traits_internal::IsHashable<variant<Hashable>>::value, "");
2074
+ static_assert(type_traits_internal::IsHashable<variant<int, Hashable>>::value,
2075
+ "");
2076
+
2077
+ #if ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_
2078
+ static_assert(!type_traits_internal::IsHashable<variant<NonHashable>>::value,
2079
+ "");
2080
+ static_assert(
2081
+ !type_traits_internal::IsHashable<variant<Hashable, NonHashable>>::value,
2082
+ "");
2083
+ #endif
2084
+
2085
+ // MSVC std::hash<std::variant> does not use the index, thus produce the same
2086
+ // result on the same value as different alternative.
2087
+ #if !(defined(_MSC_VER) && defined(ABSL_USES_STD_VARIANT))
2088
+ {
2089
+ // same value as different alternative
2090
+ variant<int, int> v0(in_place_index<0>, 42);
2091
+ variant<int, int> v1(in_place_index<1>, 42);
2092
+ std::hash<variant<int, int>> hash;
2093
+ EXPECT_NE(hash(v0), hash(v1));
2094
+ }
2095
+ #endif // !(defined(_MSC_VER) && defined(ABSL_USES_STD_VARIANT))
2096
+
2097
+ {
2098
+ std::hash<variant<int>> hash;
2099
+ std::set<size_t> hashcodes;
2100
+ for (int i = 0; i < 100; ++i) {
2101
+ hashcodes.insert(hash(i));
2102
+ }
2103
+ EXPECT_GT(hashcodes.size(), 90u);
2104
+
2105
+ // test const-qualified
2106
+ static_assert(type_traits_internal::IsHashable<variant<const int>>::value,
2107
+ "");
2108
+ static_assert(
2109
+ type_traits_internal::IsHashable<variant<const Hashable>>::value, "");
2110
+ std::hash<absl::variant<const int>> c_hash;
2111
+ for (int i = 0; i < 100; ++i) {
2112
+ EXPECT_EQ(hash(i), c_hash(i));
2113
+ }
2114
+ }
2115
+ }
2116
+
2117
+ ////////////////////////////////////////
2118
+ // Miscellaneous and deprecated tests //
2119
+ ////////////////////////////////////////
2120
+
2121
+ // Test that a set requiring a basic type conversion works correctly
2122
+ #if !defined(ABSL_USES_STD_VARIANT)
2123
+ TEST(VariantTest, TestConvertingSet) {
2124
+ typedef variant<double> Variant;
2125
+ Variant v(1.0);
2126
+ const int two = 2;
2127
+ v = two;
2128
+ EXPECT_TRUE(absl::holds_alternative<double>(v));
2129
+ ASSERT_TRUE(nullptr != absl::get_if<double>(&v));
2130
+ EXPECT_DOUBLE_EQ(2, absl::get<double>(v));
2131
+ }
2132
+ #endif // ABSL_USES_STD_VARIANT
2133
+
2134
+ // Test that a vector of variants behaves reasonably.
2135
+ TEST(VariantTest, Container) {
2136
+ typedef variant<int, float> Variant;
2137
+
2138
+ // Creation of vector should work
2139
+ std::vector<Variant> vec;
2140
+ vec.push_back(Variant(10));
2141
+ vec.push_back(Variant(20.0f));
2142
+
2143
+ // Vector resizing should work if we supply a value for new slots
2144
+ vec.resize(10, Variant(0));
2145
+ }
2146
+
2147
+ // Test that a variant with a non-copyable type can be constructed and
2148
+ // manipulated to some degree.
2149
+ TEST(VariantTest, TestVariantWithNonCopyableType) {
2150
+ typedef variant<int, NonCopyable> Variant;
2151
+ const int kValue = 1;
2152
+ Variant v(kValue);
2153
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2154
+ EXPECT_EQ(kValue, absl::get<int>(v));
2155
+ }
2156
+
2157
+ // Test that a variant with a non-copyable type can be transformed to
2158
+ // the non-copyable type with a call to `emplace` for different numbers
2159
+ // of arguments. We do not need to test this for each of T1 ... T8
2160
+ // because `emplace` does not overload on T1 ... to T8, so if this
2161
+ // works for any one of T1 ... T8, then it works for all of them. We
2162
+ // do need to test that it works with varying numbers of parameters
2163
+ // though.
2164
+ TEST(VariantTest, TestEmplace) {
2165
+ typedef variant<int, NonCopyable> Variant;
2166
+ const int kValue = 1;
2167
+ Variant v(kValue);
2168
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2169
+ EXPECT_EQ(kValue, absl::get<int>(v));
2170
+
2171
+ // emplace with zero arguments, then back to 'int'
2172
+ v.emplace<NonCopyable>();
2173
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v));
2174
+ EXPECT_EQ(0, absl::get<NonCopyable>(v).value);
2175
+ v = kValue;
2176
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2177
+
2178
+ // emplace with one argument:
2179
+ v.emplace<NonCopyable>(1);
2180
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v));
2181
+ EXPECT_EQ(1, absl::get<NonCopyable>(v).value);
2182
+ v = kValue;
2183
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2184
+
2185
+ // emplace with two arguments:
2186
+ v.emplace<NonCopyable>(1, 2);
2187
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v));
2188
+ EXPECT_EQ(3, absl::get<NonCopyable>(v).value);
2189
+ v = kValue;
2190
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2191
+
2192
+ // emplace with three arguments
2193
+ v.emplace<NonCopyable>(1, 2, 3);
2194
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v));
2195
+ EXPECT_EQ(6, absl::get<NonCopyable>(v).value);
2196
+ v = kValue;
2197
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2198
+
2199
+ // emplace with four arguments
2200
+ v.emplace<NonCopyable>(1, 2, 3, 4);
2201
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v));
2202
+ EXPECT_EQ(10, absl::get<NonCopyable>(v).value);
2203
+ v = kValue;
2204
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2205
+ }
2206
+
2207
+ TEST(VariantTest, TestEmplaceDestroysCurrentValue) {
2208
+ typedef variant<int, IncrementInDtor, NonCopyable> Variant;
2209
+ int counter = 0;
2210
+ Variant v(0);
2211
+ ASSERT_TRUE(absl::holds_alternative<int>(v));
2212
+ v.emplace<IncrementInDtor>(&counter);
2213
+ ASSERT_TRUE(absl::holds_alternative<IncrementInDtor>(v));
2214
+ ASSERT_EQ(0, counter);
2215
+ v.emplace<NonCopyable>();
2216
+ ASSERT_TRUE(absl::holds_alternative<NonCopyable>(v));
2217
+ EXPECT_EQ(1, counter);
2218
+ }
2219
+
2220
+ TEST(VariantTest, TestMoveSemantics) {
2221
+ typedef variant<std::unique_ptr<int>, std::unique_ptr<std::string>> Variant;
2222
+
2223
+ // Construct a variant by moving from an element value.
2224
+ Variant v(absl::WrapUnique(new int(10)));
2225
+ EXPECT_TRUE(absl::holds_alternative<std::unique_ptr<int>>(v));
2226
+
2227
+ // Construct a variant by moving from another variant.
2228
+ Variant v2(absl::move(v));
2229
+ ASSERT_TRUE(absl::holds_alternative<std::unique_ptr<int>>(v2));
2230
+ ASSERT_NE(nullptr, absl::get<std::unique_ptr<int>>(v2));
2231
+ EXPECT_EQ(10, *absl::get<std::unique_ptr<int>>(v2));
2232
+
2233
+ // Moving from a variant object leaves it holding moved-from value of the
2234
+ // same element type.
2235
+ EXPECT_TRUE(absl::holds_alternative<std::unique_ptr<int>>(v));
2236
+ ASSERT_NE(nullptr, absl::get_if<std::unique_ptr<int>>(&v));
2237
+ EXPECT_EQ(nullptr, absl::get<std::unique_ptr<int>>(v));
2238
+
2239
+ // Assign a variant from an element value by move.
2240
+ v = absl::make_unique<std::string>("foo");
2241
+ ASSERT_TRUE(absl::holds_alternative<std::unique_ptr<std::string>>(v));
2242
+ EXPECT_EQ("foo", *absl::get<std::unique_ptr<std::string>>(v));
2243
+
2244
+ // Move-assign a variant.
2245
+ v2 = absl::move(v);
2246
+ ASSERT_TRUE(absl::holds_alternative<std::unique_ptr<std::string>>(v2));
2247
+ EXPECT_EQ("foo", *absl::get<std::unique_ptr<std::string>>(v2));
2248
+ EXPECT_TRUE(absl::holds_alternative<std::unique_ptr<std::string>>(v));
2249
+ }
2250
+
2251
+ variant<int, std::string> PassThrough(const variant<int, std::string>& arg) {
2252
+ return arg;
2253
+ }
2254
+
2255
+ TEST(VariantTest, TestImplicitConversion) {
2256
+ EXPECT_TRUE(absl::holds_alternative<int>(PassThrough(0)));
2257
+
2258
+ // We still need the explicit cast for std::string, because C++ won't apply
2259
+ // two user-defined implicit conversions in a row.
2260
+ EXPECT_TRUE(
2261
+ absl::holds_alternative<std::string>(PassThrough(std::string("foo"))));
2262
+ }
2263
+
2264
+ struct Convertible2;
2265
+ struct Convertible1 {
2266
+ Convertible1() {}
2267
+ Convertible1(const Convertible1&) {}
2268
+ Convertible1& operator=(const Convertible1&) { return *this; }
2269
+
2270
+ // implicit conversion from Convertible2
2271
+ Convertible1(const Convertible2&) {} // NOLINT(runtime/explicit)
2272
+ };
2273
+
2274
+ struct Convertible2 {
2275
+ Convertible2() {}
2276
+ Convertible2(const Convertible2&) {}
2277
+ Convertible2& operator=(const Convertible2&) { return *this; }
2278
+
2279
+ // implicit conversion from Convertible1
2280
+ Convertible2(const Convertible1&) {} // NOLINT(runtime/explicit)
2281
+ };
2282
+
2283
+ TEST(VariantTest, TestRvalueConversion) {
2284
+ #if !defined(ABSL_USES_STD_VARIANT)
2285
+ variant<double, std::string> var(
2286
+ ConvertVariantTo<variant<double, std::string>>(
2287
+ variant<std::string, int>(0)));
2288
+ ASSERT_TRUE(absl::holds_alternative<double>(var));
2289
+ EXPECT_EQ(0.0, absl::get<double>(var));
2290
+
2291
+ var = ConvertVariantTo<variant<double, std::string>>(
2292
+ variant<const char*, float>("foo"));
2293
+ ASSERT_TRUE(absl::holds_alternative<std::string>(var));
2294
+ EXPECT_EQ("foo", absl::get<std::string>(var));
2295
+
2296
+ variant<double> singleton(
2297
+ ConvertVariantTo<variant<double>>(variant<int, float>(42)));
2298
+ ASSERT_TRUE(absl::holds_alternative<double>(singleton));
2299
+ EXPECT_EQ(42.0, absl::get<double>(singleton));
2300
+
2301
+ singleton = ConvertVariantTo<variant<double>>(variant<int, float>(3.14f));
2302
+ ASSERT_TRUE(absl::holds_alternative<double>(singleton));
2303
+ EXPECT_FLOAT_EQ(3.14f, static_cast<float>(absl::get<double>(singleton)));
2304
+
2305
+ singleton = ConvertVariantTo<variant<double>>(variant<int>(0));
2306
+ ASSERT_TRUE(absl::holds_alternative<double>(singleton));
2307
+ EXPECT_EQ(0.0, absl::get<double>(singleton));
2308
+
2309
+ variant<int32_t, uint32_t> variant2(
2310
+ ConvertVariantTo<variant<int32_t, uint32_t>>(variant<int32_t>(42)));
2311
+ ASSERT_TRUE(absl::holds_alternative<int32_t>(variant2));
2312
+ EXPECT_EQ(42, absl::get<int32_t>(variant2));
2313
+
2314
+ variant2 =
2315
+ ConvertVariantTo<variant<int32_t, uint32_t>>(variant<uint32_t>(42u));
2316
+ ASSERT_TRUE(absl::holds_alternative<uint32_t>(variant2));
2317
+ EXPECT_EQ(42u, absl::get<uint32_t>(variant2));
2318
+ #endif // !ABSL_USES_STD_VARIANT
2319
+
2320
+ variant<Convertible1, Convertible2> variant3(
2321
+ ConvertVariantTo<variant<Convertible1, Convertible2>>(
2322
+ (variant<Convertible2, Convertible1>(Convertible1()))));
2323
+ ASSERT_TRUE(absl::holds_alternative<Convertible1>(variant3));
2324
+
2325
+ variant3 = ConvertVariantTo<variant<Convertible1, Convertible2>>(
2326
+ variant<Convertible2, Convertible1>(Convertible2()));
2327
+ ASSERT_TRUE(absl::holds_alternative<Convertible2>(variant3));
2328
+ }
2329
+
2330
+ TEST(VariantTest, TestLvalueConversion) {
2331
+ #if !defined(ABSL_USES_STD_VARIANT)
2332
+ variant<std::string, int> source1 = 0;
2333
+ variant<double, std::string> destination(
2334
+ ConvertVariantTo<variant<double, std::string>>(source1));
2335
+ ASSERT_TRUE(absl::holds_alternative<double>(destination));
2336
+ EXPECT_EQ(0.0, absl::get<double>(destination));
2337
+
2338
+ variant<const char*, float> source2 = "foo";
2339
+ destination = ConvertVariantTo<variant<double, std::string>>(source2);
2340
+ ASSERT_TRUE(absl::holds_alternative<std::string>(destination));
2341
+ EXPECT_EQ("foo", absl::get<std::string>(destination));
2342
+
2343
+ variant<int, float> source3(42);
2344
+ variant<double> singleton(ConvertVariantTo<variant<double>>(source3));
2345
+ ASSERT_TRUE(absl::holds_alternative<double>(singleton));
2346
+ EXPECT_EQ(42.0, absl::get<double>(singleton));
2347
+
2348
+ source3 = 3.14f;
2349
+ singleton = ConvertVariantTo<variant<double>>(source3);
2350
+ ASSERT_TRUE(absl::holds_alternative<double>(singleton));
2351
+ EXPECT_FLOAT_EQ(3.14f, static_cast<float>(absl::get<double>(singleton)));
2352
+
2353
+ variant<int> source4(0);
2354
+ singleton = ConvertVariantTo<variant<double>>(source4);
2355
+ ASSERT_TRUE(absl::holds_alternative<double>(singleton));
2356
+ EXPECT_EQ(0.0, absl::get<double>(singleton));
2357
+
2358
+ variant<int32_t> source5(42);
2359
+ variant<int32_t, uint32_t> variant2(
2360
+ ConvertVariantTo<variant<int32_t, uint32_t>>(source5));
2361
+ ASSERT_TRUE(absl::holds_alternative<int32_t>(variant2));
2362
+ EXPECT_EQ(42, absl::get<int32_t>(variant2));
2363
+
2364
+ variant<uint32_t> source6(42u);
2365
+ variant2 = ConvertVariantTo<variant<int32_t, uint32_t>>(source6);
2366
+ ASSERT_TRUE(absl::holds_alternative<uint32_t>(variant2));
2367
+ EXPECT_EQ(42u, absl::get<uint32_t>(variant2));
2368
+ #endif
2369
+
2370
+ variant<Convertible2, Convertible1> source7((Convertible1()));
2371
+ variant<Convertible1, Convertible2> variant3(
2372
+ ConvertVariantTo<variant<Convertible1, Convertible2>>(source7));
2373
+ ASSERT_TRUE(absl::holds_alternative<Convertible1>(variant3));
2374
+
2375
+ source7 = Convertible2();
2376
+ variant3 = ConvertVariantTo<variant<Convertible1, Convertible2>>(source7);
2377
+ ASSERT_TRUE(absl::holds_alternative<Convertible2>(variant3));
2378
+ }
2379
+
2380
+ TEST(VariantTest, TestMoveConversion) {
2381
+ using Variant =
2382
+ variant<std::unique_ptr<const int>, std::unique_ptr<const std::string>>;
2383
+ using OtherVariant =
2384
+ variant<std::unique_ptr<int>, std::unique_ptr<std::string>>;
2385
+
2386
+ Variant var(
2387
+ ConvertVariantTo<Variant>(OtherVariant{absl::make_unique<int>(0)}));
2388
+ ASSERT_TRUE(absl::holds_alternative<std::unique_ptr<const int>>(var));
2389
+ ASSERT_NE(absl::get<std::unique_ptr<const int>>(var), nullptr);
2390
+ EXPECT_EQ(0, *absl::get<std::unique_ptr<const int>>(var));
2391
+
2392
+ var = ConvertVariantTo<Variant>(
2393
+ OtherVariant(absl::make_unique<std::string>("foo")));
2394
+ ASSERT_TRUE(absl::holds_alternative<std::unique_ptr<const std::string>>(var));
2395
+ EXPECT_EQ("foo", *absl::get<std::unique_ptr<const std::string>>(var));
2396
+ }
2397
+
2398
+ TEST(VariantTest, DoesNotMoveFromLvalues) {
2399
+ // We use shared_ptr here because it's both copyable and movable, and
2400
+ // a moved-from shared_ptr is guaranteed to be null, so we can detect
2401
+ // whether moving or copying has occurred.
2402
+ using Variant =
2403
+ variant<std::shared_ptr<const int>, std::shared_ptr<const std::string>>;
2404
+ using OtherVariant =
2405
+ variant<std::shared_ptr<int>, std::shared_ptr<std::string>>;
2406
+
2407
+ Variant v1(std::make_shared<const int>(0));
2408
+
2409
+ // Test copy constructor
2410
+ Variant v2(v1);
2411
+ EXPECT_EQ(absl::get<std::shared_ptr<const int>>(v1),
2412
+ absl::get<std::shared_ptr<const int>>(v2));
2413
+
2414
+ // Test copy-assignment operator
2415
+ v1 = std::make_shared<const std::string>("foo");
2416
+ v2 = v1;
2417
+ EXPECT_EQ(absl::get<std::shared_ptr<const std::string>>(v1),
2418
+ absl::get<std::shared_ptr<const std::string>>(v2));
2419
+
2420
+ // Test converting copy constructor
2421
+ OtherVariant other(std::make_shared<int>(0));
2422
+ Variant v3(ConvertVariantTo<Variant>(other));
2423
+ EXPECT_EQ(absl::get<std::shared_ptr<int>>(other),
2424
+ absl::get<std::shared_ptr<const int>>(v3));
2425
+
2426
+ other = std::make_shared<std::string>("foo");
2427
+ v3 = ConvertVariantTo<Variant>(other);
2428
+ EXPECT_EQ(absl::get<std::shared_ptr<std::string>>(other),
2429
+ absl::get<std::shared_ptr<const std::string>>(v3));
2430
+ }
2431
+
2432
+ TEST(VariantTest, TestRvalueConversionViaConvertVariantTo) {
2433
+ #if !defined(ABSL_USES_STD_VARIANT)
2434
+ variant<double, std::string> var(
2435
+ ConvertVariantTo<variant<double, std::string>>(
2436
+ variant<std::string, int>(3)));
2437
+ EXPECT_THAT(absl::get_if<double>(&var), Pointee(3.0));
2438
+
2439
+ var = ConvertVariantTo<variant<double, std::string>>(
2440
+ variant<const char*, float>("foo"));
2441
+ EXPECT_THAT(absl::get_if<std::string>(&var), Pointee(std::string("foo")));
2442
+
2443
+ variant<double> singleton(
2444
+ ConvertVariantTo<variant<double>>(variant<int, float>(42)));
2445
+ EXPECT_THAT(absl::get_if<double>(&singleton), Pointee(42.0));
2446
+
2447
+ singleton = ConvertVariantTo<variant<double>>(variant<int, float>(3.14f));
2448
+ EXPECT_THAT(absl::get_if<double>(&singleton), Pointee(DoubleEq(3.14f)));
2449
+
2450
+ singleton = ConvertVariantTo<variant<double>>(variant<int>(3));
2451
+ EXPECT_THAT(absl::get_if<double>(&singleton), Pointee(3.0));
2452
+
2453
+ variant<int32_t, uint32_t> variant2(
2454
+ ConvertVariantTo<variant<int32_t, uint32_t>>(variant<int32_t>(42)));
2455
+ EXPECT_THAT(absl::get_if<int32_t>(&variant2), Pointee(42));
2456
+
2457
+ variant2 =
2458
+ ConvertVariantTo<variant<int32_t, uint32_t>>(variant<uint32_t>(42u));
2459
+ EXPECT_THAT(absl::get_if<uint32_t>(&variant2), Pointee(42u));
2460
+ #endif
2461
+
2462
+ variant<Convertible1, Convertible2> variant3(
2463
+ ConvertVariantTo<variant<Convertible1, Convertible2>>(
2464
+ (variant<Convertible2, Convertible1>(Convertible1()))));
2465
+ ASSERT_TRUE(absl::holds_alternative<Convertible1>(variant3));
2466
+
2467
+ variant3 = ConvertVariantTo<variant<Convertible1, Convertible2>>(
2468
+ variant<Convertible2, Convertible1>(Convertible2()));
2469
+ ASSERT_TRUE(absl::holds_alternative<Convertible2>(variant3));
2470
+ }
2471
+
2472
+ TEST(VariantTest, TestLvalueConversionViaConvertVariantTo) {
2473
+ #if !defined(ABSL_USES_STD_VARIANT)
2474
+ variant<std::string, int> source1 = 3;
2475
+ variant<double, std::string> destination(
2476
+ ConvertVariantTo<variant<double, std::string>>(source1));
2477
+ EXPECT_THAT(absl::get_if<double>(&destination), Pointee(3.0));
2478
+
2479
+ variant<const char*, float> source2 = "foo";
2480
+ destination = ConvertVariantTo<variant<double, std::string>>(source2);
2481
+ EXPECT_THAT(absl::get_if<std::string>(&destination),
2482
+ Pointee(std::string("foo")));
2483
+
2484
+ variant<int, float> source3(42);
2485
+ variant<double> singleton(ConvertVariantTo<variant<double>>(source3));
2486
+ EXPECT_THAT(absl::get_if<double>(&singleton), Pointee(42.0));
2487
+
2488
+ source3 = 3.14f;
2489
+ singleton = ConvertVariantTo<variant<double>>(source3);
2490
+ EXPECT_FLOAT_EQ(3.14f, static_cast<float>(absl::get<double>(singleton)));
2491
+ EXPECT_THAT(absl::get_if<double>(&singleton), Pointee(DoubleEq(3.14f)));
2492
+
2493
+ variant<int> source4(3);
2494
+ singleton = ConvertVariantTo<variant<double>>(source4);
2495
+ EXPECT_THAT(absl::get_if<double>(&singleton), Pointee(3.0));
2496
+
2497
+ variant<int32_t> source5(42);
2498
+ variant<int32_t, uint32_t> variant2(
2499
+ ConvertVariantTo<variant<int32_t, uint32_t>>(source5));
2500
+ EXPECT_THAT(absl::get_if<int32_t>(&variant2), Pointee(42));
2501
+
2502
+ variant<uint32_t> source6(42u);
2503
+ variant2 = ConvertVariantTo<variant<int32_t, uint32_t>>(source6);
2504
+ EXPECT_THAT(absl::get_if<uint32_t>(&variant2), Pointee(42u));
2505
+ #endif // !ABSL_USES_STD_VARIANT
2506
+
2507
+ variant<Convertible2, Convertible1> source7((Convertible1()));
2508
+ variant<Convertible1, Convertible2> variant3(
2509
+ ConvertVariantTo<variant<Convertible1, Convertible2>>(source7));
2510
+ ASSERT_TRUE(absl::holds_alternative<Convertible1>(variant3));
2511
+
2512
+ source7 = Convertible2();
2513
+ variant3 = ConvertVariantTo<variant<Convertible1, Convertible2>>(source7);
2514
+ ASSERT_TRUE(absl::holds_alternative<Convertible2>(variant3));
2515
+ }
2516
+
2517
+ TEST(VariantTest, TestMoveConversionViaConvertVariantTo) {
2518
+ using Variant =
2519
+ variant<std::unique_ptr<const int>, std::unique_ptr<const std::string>>;
2520
+ using OtherVariant =
2521
+ variant<std::unique_ptr<int>, std::unique_ptr<std::string>>;
2522
+
2523
+ Variant var(
2524
+ ConvertVariantTo<Variant>(OtherVariant{absl::make_unique<int>(3)}));
2525
+ EXPECT_THAT(absl::get_if<std::unique_ptr<const int>>(&var),
2526
+ Pointee(Pointee(3)));
2527
+
2528
+ var = ConvertVariantTo<Variant>(
2529
+ OtherVariant(absl::make_unique<std::string>("foo")));
2530
+ EXPECT_THAT(absl::get_if<std::unique_ptr<const std::string>>(&var),
2531
+ Pointee(Pointee(std::string("foo"))));
2532
+ }
2533
+
2534
+ // If all alternatives are trivially copy/move constructible, variant should
2535
+ // also be trivially copy/move constructible. This is not required by the
2536
+ // standard and we know that libstdc++ variant doesn't have this feature.
2537
+ // For more details see the paper:
2538
+ // http://open-std.org/JTC1/SC22/WG21/docs/papers/2017/p0602r0.html
2539
+ #if !(defined(ABSL_USES_STD_VARIANT) && defined(__GLIBCXX__))
2540
+ #define ABSL_VARIANT_PROPAGATE_COPY_MOVE_TRIVIALITY 1
2541
+ #endif
2542
+
2543
+ TEST(VariantTest, TestCopyAndMoveTypeTraits) {
2544
+ EXPECT_TRUE(std::is_copy_constructible<variant<std::string>>::value);
2545
+ EXPECT_TRUE(absl::is_copy_assignable<variant<std::string>>::value);
2546
+ EXPECT_TRUE(std::is_move_constructible<variant<std::string>>::value);
2547
+ EXPECT_TRUE(absl::is_move_assignable<variant<std::string>>::value);
2548
+ EXPECT_TRUE(std::is_move_constructible<variant<std::unique_ptr<int>>>::value);
2549
+ EXPECT_TRUE(absl::is_move_assignable<variant<std::unique_ptr<int>>>::value);
2550
+ EXPECT_FALSE(
2551
+ std::is_copy_constructible<variant<std::unique_ptr<int>>>::value);
2552
+ EXPECT_FALSE(absl::is_copy_assignable<variant<std::unique_ptr<int>>>::value);
2553
+
2554
+ EXPECT_FALSE(
2555
+ absl::is_trivially_copy_constructible<variant<std::string>>::value);
2556
+ EXPECT_FALSE(absl::is_trivially_copy_assignable<variant<std::string>>::value);
2557
+ #if ABSL_VARIANT_PROPAGATE_COPY_MOVE_TRIVIALITY
2558
+ EXPECT_TRUE(absl::is_trivially_copy_constructible<variant<int>>::value);
2559
+ EXPECT_TRUE(absl::is_trivially_copy_assignable<variant<int>>::value);
2560
+ EXPECT_TRUE(is_trivially_move_constructible<variant<int>>::value);
2561
+ EXPECT_TRUE(is_trivially_move_assignable<variant<int>>::value);
2562
+ #endif // ABSL_VARIANT_PROPAGATE_COPY_MOVE_TRIVIALITY
2563
+ }
2564
+
2565
+ TEST(VariantTest, TestVectorOfMoveonlyVariant) {
2566
+ // Verify that variant<MoveonlyType> works correctly as a std::vector element.
2567
+ std::vector<variant<std::unique_ptr<int>, std::string>> vec;
2568
+ vec.push_back(absl::make_unique<int>(42));
2569
+ vec.emplace_back("Hello");
2570
+ vec.reserve(3);
2571
+ auto another_vec = absl::move(vec);
2572
+ // As a sanity check, verify vector contents.
2573
+ ASSERT_EQ(2u, another_vec.size());
2574
+ EXPECT_EQ(42, *absl::get<std::unique_ptr<int>>(another_vec[0]));
2575
+ EXPECT_EQ("Hello", absl::get<std::string>(another_vec[1]));
2576
+ }
2577
+
2578
+ TEST(VariantTest, NestedVariant) {
2579
+ #if ABSL_VARIANT_PROPAGATE_COPY_MOVE_TRIVIALITY
2580
+ static_assert(absl::is_trivially_copy_constructible<variant<int>>(), "");
2581
+ static_assert(absl::is_trivially_copy_assignable<variant<int>>(), "");
2582
+ static_assert(is_trivially_move_constructible<variant<int>>(), "");
2583
+ static_assert(is_trivially_move_assignable<variant<int>>(), "");
2584
+
2585
+ static_assert(absl::is_trivially_copy_constructible<variant<variant<int>>>(),
2586
+ "");
2587
+ static_assert(absl::is_trivially_copy_assignable<variant<variant<int>>>(),
2588
+ "");
2589
+ static_assert(is_trivially_move_constructible<variant<variant<int>>>(), "");
2590
+ static_assert(is_trivially_move_assignable<variant<variant<int>>>(), "");
2591
+ #endif // ABSL_VARIANT_PROPAGATE_COPY_MOVE_TRIVIALITY
2592
+
2593
+ variant<int> x(42);
2594
+ variant<variant<int>> y(x);
2595
+ variant<variant<int>> z(y);
2596
+ EXPECT_TRUE(absl::holds_alternative<variant<int>>(z));
2597
+ EXPECT_EQ(x, absl::get<variant<int>>(z));
2598
+ }
2599
+
2600
+ struct TriviallyDestructible {
2601
+ TriviallyDestructible(TriviallyDestructible&&) {}
2602
+ TriviallyDestructible(const TriviallyDestructible&) {}
2603
+ TriviallyDestructible& operator=(TriviallyDestructible&&) { return *this; }
2604
+ TriviallyDestructible& operator=(const TriviallyDestructible&) {
2605
+ return *this;
2606
+ }
2607
+ };
2608
+
2609
+ struct TriviallyMovable {
2610
+ TriviallyMovable(TriviallyMovable&&) = default;
2611
+ TriviallyMovable(TriviallyMovable const&) {}
2612
+ TriviallyMovable& operator=(const TriviallyMovable&) { return *this; }
2613
+ };
2614
+
2615
+ struct TriviallyCopyable {
2616
+ TriviallyCopyable(const TriviallyCopyable&) = default;
2617
+ TriviallyCopyable& operator=(const TriviallyCopyable&) { return *this; }
2618
+ };
2619
+
2620
+ struct TriviallyMoveAssignable {
2621
+ TriviallyMoveAssignable(TriviallyMoveAssignable&&) = default;
2622
+ TriviallyMoveAssignable(const TriviallyMoveAssignable&) {}
2623
+ TriviallyMoveAssignable& operator=(TriviallyMoveAssignable&&) = default;
2624
+ TriviallyMoveAssignable& operator=(const TriviallyMoveAssignable&) {
2625
+ return *this;
2626
+ }
2627
+ };
2628
+
2629
+ struct TriviallyCopyAssignable {};
2630
+
2631
+ #if ABSL_VARIANT_PROPAGATE_COPY_MOVE_TRIVIALITY
2632
+ TEST(VariantTest, TestTriviality) {
2633
+ {
2634
+ using TrivDestVar = absl::variant<TriviallyDestructible>;
2635
+
2636
+ EXPECT_FALSE(is_trivially_move_constructible<TrivDestVar>::value);
2637
+ EXPECT_FALSE(absl::is_trivially_copy_constructible<TrivDestVar>::value);
2638
+ EXPECT_FALSE(is_trivially_move_assignable<TrivDestVar>::value);
2639
+ EXPECT_FALSE(absl::is_trivially_copy_assignable<TrivDestVar>::value);
2640
+ EXPECT_TRUE(absl::is_trivially_destructible<TrivDestVar>::value);
2641
+ }
2642
+
2643
+ {
2644
+ using TrivMoveVar = absl::variant<TriviallyMovable>;
2645
+
2646
+ EXPECT_TRUE(is_trivially_move_constructible<TrivMoveVar>::value);
2647
+ EXPECT_FALSE(absl::is_trivially_copy_constructible<TrivMoveVar>::value);
2648
+ EXPECT_FALSE(is_trivially_move_assignable<TrivMoveVar>::value);
2649
+ EXPECT_FALSE(absl::is_trivially_copy_assignable<TrivMoveVar>::value);
2650
+ EXPECT_TRUE(absl::is_trivially_destructible<TrivMoveVar>::value);
2651
+ }
2652
+
2653
+ {
2654
+ using TrivCopyVar = absl::variant<TriviallyCopyable>;
2655
+
2656
+ EXPECT_TRUE(is_trivially_move_constructible<TrivCopyVar>::value);
2657
+ EXPECT_TRUE(absl::is_trivially_copy_constructible<TrivCopyVar>::value);
2658
+ EXPECT_FALSE(is_trivially_move_assignable<TrivCopyVar>::value);
2659
+ EXPECT_FALSE(absl::is_trivially_copy_assignable<TrivCopyVar>::value);
2660
+ EXPECT_TRUE(absl::is_trivially_destructible<TrivCopyVar>::value);
2661
+ }
2662
+
2663
+ {
2664
+ using TrivMoveAssignVar = absl::variant<TriviallyMoveAssignable>;
2665
+
2666
+ EXPECT_TRUE(is_trivially_move_constructible<TrivMoveAssignVar>::value);
2667
+ EXPECT_FALSE(
2668
+ absl::is_trivially_copy_constructible<TrivMoveAssignVar>::value);
2669
+ EXPECT_TRUE(is_trivially_move_assignable<TrivMoveAssignVar>::value);
2670
+ EXPECT_FALSE(absl::is_trivially_copy_assignable<TrivMoveAssignVar>::value);
2671
+ EXPECT_TRUE(absl::is_trivially_destructible<TrivMoveAssignVar>::value);
2672
+ }
2673
+
2674
+ {
2675
+ using TrivCopyAssignVar = absl::variant<TriviallyCopyAssignable>;
2676
+
2677
+ EXPECT_TRUE(is_trivially_move_constructible<TrivCopyAssignVar>::value);
2678
+ EXPECT_TRUE(
2679
+ absl::is_trivially_copy_constructible<TrivCopyAssignVar>::value);
2680
+ EXPECT_TRUE(is_trivially_move_assignable<TrivCopyAssignVar>::value);
2681
+ EXPECT_TRUE(absl::is_trivially_copy_assignable<TrivCopyAssignVar>::value);
2682
+ EXPECT_TRUE(absl::is_trivially_destructible<TrivCopyAssignVar>::value);
2683
+ }
2684
+ }
2685
+ #endif // ABSL_VARIANT_PROPAGATE_COPY_MOVE_TRIVIALITY
2686
+
2687
+ // To verify that absl::variant correctly use the nontrivial move ctor of its
2688
+ // member rather than use the trivial copy constructor.
2689
+ TEST(VariantTest, MoveCtorBug) {
2690
+ // To simulate std::tuple in libstdc++.
2691
+ struct TrivialCopyNontrivialMove {
2692
+ TrivialCopyNontrivialMove() = default;
2693
+ TrivialCopyNontrivialMove(const TrivialCopyNontrivialMove&) = default;
2694
+ TrivialCopyNontrivialMove(TrivialCopyNontrivialMove&&) { called = true; }
2695
+ bool called = false;
2696
+ };
2697
+ {
2698
+ using V = absl::variant<TrivialCopyNontrivialMove, int>;
2699
+ V v1(absl::in_place_index<0>);
2700
+ // this should invoke the move ctor, rather than the trivial copy ctor.
2701
+ V v2(std::move(v1));
2702
+ EXPECT_TRUE(absl::get<0>(v2).called);
2703
+ }
2704
+ {
2705
+ // this case failed to compile before our fix due to a GCC bug.
2706
+ using V = absl::variant<int, TrivialCopyNontrivialMove>;
2707
+ V v1(absl::in_place_index<1>);
2708
+ // this should invoke the move ctor, rather than the trivial copy ctor.
2709
+ V v2(std::move(v1));
2710
+ EXPECT_TRUE(absl::get<1>(v2).called);
2711
+ }
2712
+ }
2713
+
2714
+ } // namespace
2715
+ ABSL_NAMESPACE_END
2716
+ } // namespace absl
2717
+
2718
+ #endif // #if !defined(ABSL_USES_STD_VARIANT)