re2 1.24.0 → 1.25.0

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 (370) hide show
  1. package/LICENSE +15 -20
  2. package/README.md +63 -4
  3. package/binding.gyp +1 -2
  4. package/lib/addon.cc +9 -5
  5. package/lib/exec.cc +4 -4
  6. package/lib/match.cc +4 -4
  7. package/lib/new.cc +6 -6
  8. package/lib/pattern.cc +148 -1
  9. package/lib/replace.cc +5 -4
  10. package/lib/search.cc +1 -1
  11. package/lib/set.cc +85 -10
  12. package/lib/test.cc +1 -1
  13. package/lib/unicode_properties.h +15840 -0
  14. package/lib/wrapped_re2.h +40 -4
  15. package/lib/wrapped_re2_set.h +3 -1
  16. package/llms-full.txt +497 -0
  17. package/llms.txt +135 -0
  18. package/package.json +19 -11
  19. package/re2.d.ts +2 -0
  20. package/re2.js +1 -0
  21. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
  22. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  23. package/vendor/abseil-cpp/FAQ.md +130 -79
  24. package/vendor/abseil-cpp/MODULE.bazel +6 -7
  25. package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
  26. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
  27. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
  28. package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  29. package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
  30. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
  31. package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
  32. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
  33. package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
  34. package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
  35. package/vendor/abseil-cpp/absl/base/casts.h +8 -1
  36. package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
  37. package/vendor/abseil-cpp/absl/base/config.h +53 -9
  38. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
  39. package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
  40. package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
  41. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
  42. package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
  43. package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
  44. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
  45. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
  46. package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  47. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
  48. package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  49. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  50. package/vendor/abseil-cpp/absl/base/macros.h +36 -20
  51. package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
  52. package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
  53. package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
  54. package/vendor/abseil-cpp/absl/base/options.h +55 -1
  55. package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
  56. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  57. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  58. package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
  59. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
  60. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
  61. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
  62. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  63. package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
  64. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
  65. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
  66. package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
  67. package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
  68. package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
  69. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
  70. package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
  71. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
  72. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
  73. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
  74. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
  75. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
  76. package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
  77. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
  78. package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
  79. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
  80. package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
  81. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  82. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
  83. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
  84. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
  85. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
  86. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
  87. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
  88. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
  89. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
  90. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
  91. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
  92. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
  93. package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
  94. package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
  95. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
  96. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
  97. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
  99. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
  100. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
  101. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
  102. package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
  103. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
  104. package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
  105. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
  106. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
  107. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
  108. package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
  109. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
  110. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
  111. package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  112. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  113. package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  114. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
  115. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
  116. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
  117. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  118. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
  119. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
  120. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
  121. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
  122. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
  123. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  124. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
  125. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
  126. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
  127. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
  128. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
  129. package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  130. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
  131. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
  132. package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  133. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
  134. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
  135. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  136. package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
  137. package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
  138. package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
  139. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
  140. package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
  141. package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
  142. package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
  143. package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
  144. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
  145. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
  146. package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
  147. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
  148. package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
  149. package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
  150. package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
  151. package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
  152. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
  153. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
  154. package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
  155. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  156. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  157. package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
  158. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
  159. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
  160. package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
  161. package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
  162. package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
  163. package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
  164. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
  165. package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
  166. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
  167. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
  168. package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
  169. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
  170. package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  171. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
  172. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
  173. package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
  174. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  175. package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
  176. package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  177. package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  178. package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
  179. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
  180. package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
  181. package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
  182. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
  183. package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
  184. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
  185. package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
  186. package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  187. package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
  188. package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
  189. package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
  190. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  191. package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
  192. package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
  193. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
  194. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
  195. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
  196. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
  197. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
  198. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
  199. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
  200. package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
  201. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
  202. package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
  203. package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
  204. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  205. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
  206. package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  207. package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
  208. package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
  209. package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  210. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
  211. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  212. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  213. package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  214. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  215. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
  216. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
  217. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  218. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
  219. package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  220. package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
  221. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  222. package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  223. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
  224. package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
  225. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  226. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
  227. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  228. package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
  229. package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
  230. package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  231. package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
  232. package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
  233. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
  234. package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  235. package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
  236. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
  237. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  238. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
  239. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
  240. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
  241. package/vendor/abseil-cpp/absl/status/status.cc +62 -70
  242. package/vendor/abseil-cpp/absl/status/status.h +249 -23
  243. package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
  244. package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
  245. package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
  246. package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
  247. package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
  248. package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
  249. package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
  250. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
  251. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  252. package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
  253. package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
  254. package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
  255. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
  256. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
  257. package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
  258. package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
  259. package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
  260. package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
  261. package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  262. package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
  263. package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
  264. package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
  265. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
  266. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
  267. package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
  268. package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
  269. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
  270. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
  271. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  272. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  273. package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  274. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
  275. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
  276. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
  277. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
  278. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
  279. package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  280. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  281. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  282. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
  283. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
  284. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
  285. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
  286. package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
  287. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  288. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
  289. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
  290. package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
  291. package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
  292. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
  293. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
  294. package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
  295. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
  296. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
  297. package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
  298. package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
  299. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
  300. package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
  301. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
  302. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
  303. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  304. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
  305. package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
  306. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
  307. package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
  308. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
  309. package/vendor/abseil-cpp/absl/time/clock.h +3 -0
  310. package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
  311. package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
  312. package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
  313. package/vendor/abseil-cpp/absl/time/format.cc +3 -10
  314. package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
  315. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
  316. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
  317. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
  318. package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  319. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  320. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  321. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  322. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  323. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  324. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  325. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  326. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  327. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  328. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  329. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
  330. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
  331. package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
  332. package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
  333. package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
  334. package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
  335. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
  336. package/vendor/abseil-cpp/absl/types/any.h +26 -4
  337. package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
  338. package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
  339. package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
  340. package/vendor/abseil-cpp/absl/types/compare.h +4 -4
  341. package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
  342. package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
  343. package/vendor/abseil-cpp/absl/types/optional.h +30 -3
  344. package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
  345. package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
  346. package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
  347. package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
  348. package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
  349. package/vendor/abseil-cpp/absl/types/span.h +19 -23
  350. package/vendor/abseil-cpp/absl/types/variant.h +75 -18
  351. package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
  352. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
  353. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
  354. package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
  355. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
  356. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
  357. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
  358. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
  359. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
  360. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
  361. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  362. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
  363. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
  364. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
  365. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
  366. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
  367. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
  368. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
  369. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
  370. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
@@ -0,0 +1,172 @@
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
+ // -----------------------------------------------------------------------------
16
+ // File: source_location.h
17
+ // -----------------------------------------------------------------------------
18
+ //
19
+ // absl::SourceLocation provides source-code location info for C++17 and later.
20
+ //
21
+ // Critically, it is a **view type** (like std::string_view). Unlike
22
+ // std::source_location, it is not permanently valid and must not outlive its
23
+ // source. Using an invalid location is an error and may result in warnings
24
+ // or crashes.
25
+ //
26
+ // Additionally, it does not guarantee the retention of all caller information
27
+ // (e.g. column or function name) and may e.g. return unspecified values for
28
+ // performance reasons.
29
+ //
30
+ // To define a function that has access to the source location of the
31
+ // callsite, define it with a parameter of type `absl::SourceLocation`. The
32
+ // caller can then invoke the function, passing
33
+ // `absl::SourceLocation::current()` as the argument.
34
+ //
35
+ // If at all possible, make the `absl::SourceLocation` parameter be the
36
+ // function's last parameter. That way, when `std::source_location` is
37
+ // available, you will be able to switch to it, and give the parameter a default
38
+ // argument of `std::source_location::current()`. Users will then be able to
39
+ // omit that argument, and the default will automatically capture the location
40
+ // of the callsite.
41
+
42
+ #ifndef ABSL_TYPES_SOURCE_LOCATION_H_
43
+ #define ABSL_TYPES_SOURCE_LOCATION_H_
44
+
45
+ #include <cstdint>
46
+ #include <type_traits>
47
+
48
+ #include "absl/base/config.h"
49
+ #include "absl/base/nullability.h"
50
+
51
+ // This needs to come after absl/base/config.h, which is responsible for
52
+ // defining ABSL_HAVE_STD_SOURCE_LOCATION
53
+ #ifdef ABSL_HAVE_STD_SOURCE_LOCATION
54
+ #include <source_location> // NOLINT(build/c++20)
55
+ #endif
56
+
57
+ // For OSS release, whether to alias to std::source_location is configurable via
58
+ // config.h/options.h, similar to std::string_view/variant/etc.
59
+ #if defined(ABSL_USES_STD_SOURCE_LOCATION) && \
60
+ defined(ABSL_HAVE_STD_SOURCE_LOCATION)
61
+ namespace absl {
62
+ ABSL_NAMESPACE_BEGIN
63
+ using SourceLocation = std::source_location;
64
+ ABSL_NAMESPACE_END
65
+ } // namespace absl
66
+
67
+ #else // ABSL_HAVE_STD_SOURCE_LOCATION
68
+
69
+ namespace absl {
70
+ ABSL_NAMESPACE_BEGIN
71
+
72
+ // C++17-compatible class representing a specific location in the source code of
73
+ // a program. Similar to std::source_location, but with a few key differences
74
+ // explained above.
75
+ class SourceLocation {
76
+ struct PrivateTag {
77
+ private:
78
+ explicit PrivateTag() = default;
79
+ friend class SourceLocation;
80
+ };
81
+
82
+ public:
83
+ // Avoid this constructor; it populates the object with dummy values.
84
+ SourceLocation() = default;
85
+
86
+ #ifdef ABSL_HAVE_STD_SOURCE_LOCATION
87
+ constexpr SourceLocation( // NOLINT(google-explicit-constructor)
88
+ std::source_location loc)
89
+ : SourceLocation(loc.line(), loc.file_name()) {}
90
+ #endif
91
+
92
+ #ifdef ABSL_INTERNAL_HAVE_BUILTIN_LINE_FILE
93
+ // SourceLocation::current
94
+ //
95
+ // Creates a `SourceLocation` based on the current source location. Currently,
96
+ // it only captures file and line information for efficiency purposes, but
97
+ // that is subject to change. APIs that accept a `SourceLocation` as a default
98
+ // parameter can use this to capture their caller's locations.
99
+ //
100
+ // Example:
101
+ //
102
+ // void TracedAdd(int i, SourceLocation loc = SourceLocation::current()) {
103
+ // std::cout << loc.file_name() << ":" << loc.line() << " added " << i;
104
+ // ...
105
+ // }
106
+ //
107
+ // void UserCode() {
108
+ // TracedAdd(1);
109
+ // TracedAdd(2);
110
+ // }
111
+ static constexpr SourceLocation current(
112
+ PrivateTag = PrivateTag{}, std::uint_least32_t line = __builtin_LINE(),
113
+ const char* absl_nonnull file_name = __builtin_FILE()) {
114
+ return SourceLocation(line, file_name);
115
+ }
116
+ #else
117
+ // Creates a dummy `SourceLocation` of "<source_location>" at line number 1,
118
+ // if no `SourceLocation::current()` implementation is available.
119
+ static constexpr SourceLocation current() {
120
+ return SourceLocation(1, "<source_location>");
121
+ }
122
+ #endif
123
+ // The line number of the captured source location, or an unspecified value
124
+ // if this information is not available.
125
+ constexpr std::uint_least32_t line() const noexcept { return line_; }
126
+
127
+ // The column number of the captured source location, or an unspecified value
128
+ // if this information is not available.
129
+ constexpr std::uint_least32_t column() const noexcept { return 0; }
130
+
131
+ // The file name of the captured source location, or an unspecified string
132
+ // if this information is not available. Guaranteed to never be NULL.
133
+ constexpr const char* absl_nonnull file_name() const noexcept {
134
+ return file_name_;
135
+ }
136
+
137
+ // The function name of the captured source location, or an unspecified string
138
+ // if this information is not available. Guaranteed to never be NULL.
139
+ //
140
+ // NOTE: Currently, we deliberately avoid providing the function name, as it
141
+ // can bloat binary sizes and is non-critical. This may change in the future.
142
+ constexpr const char* absl_nonnull function_name() const noexcept {
143
+ return "";
144
+ }
145
+
146
+ private:
147
+ // `file_name` must outlive all copies of the `absl::SourceLocation` object,
148
+ // so in practice it should be a string literal.
149
+ constexpr SourceLocation(std::uint_least32_t line,
150
+ const char* absl_nonnull file_name)
151
+ : line_(line), file_name_(file_name) {}
152
+
153
+ // We would use [[maybe_unused]] here, but it doesn't work on all supported
154
+ // toolchains at the moment.
155
+ friend constexpr int UseUnused() {
156
+ static_assert(SourceLocation(0, nullptr).unused_column_ == 0,
157
+ "Use the otherwise-unused member.");
158
+ return 0;
159
+ }
160
+
161
+ // "unused" members are present to minimize future changes in the size of this
162
+ // type.
163
+ std::uint_least32_t line_ = 0;
164
+ std::uint_least32_t unused_column_ = 0;
165
+ const char* absl_nonnull file_name_ = "";
166
+ };
167
+
168
+ ABSL_NAMESPACE_END
169
+ } // namespace absl
170
+ #endif // ABSL_HAVE_STD_SOURCE_LOCATION
171
+
172
+ #endif // ABSL_TYPES_SOURCE_LOCATION_H_
@@ -0,0 +1,139 @@
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
+ #include "absl/types/source_location.h"
16
+
17
+ #include "absl/base/config.h"
18
+
19
+ #ifdef ABSL_HAVE_STD_SOURCE_LOCATION
20
+ #include <source_location> // NOLINT(build/c++20)
21
+ #endif
22
+ #include <type_traits>
23
+
24
+ #include "gmock/gmock.h"
25
+ #include "gtest/gtest.h"
26
+ #include "absl/strings/string_view.h"
27
+
28
+ namespace {
29
+
30
+ using ::absl::SourceLocation;
31
+ using ::testing::EndsWith;
32
+
33
+ TEST(SourceLocationTest, DefaultConstructionWorks) {
34
+ static_assert(!std::is_trivially_default_constructible_v<SourceLocation>);
35
+ static_assert(std::is_nothrow_default_constructible_v<SourceLocation>);
36
+ constexpr SourceLocation loc1 [[maybe_unused]];
37
+ SourceLocation loc2 [[maybe_unused]]{};
38
+ EXPECT_EQ(loc1.line(), loc2.line());
39
+ }
40
+
41
+ #ifdef ABSL_INTERNAL_HAVE_BUILTIN_LINE_FILE
42
+
43
+ TEST(SourceLocationTest, ConstexprMembers) {
44
+ constexpr SourceLocation loc1 = absl::SourceLocation::current();
45
+ const SourceLocation loc2 = absl::SourceLocation::current();
46
+ EXPECT_EQ(loc1.line(), loc2.line() - 1);
47
+ EXPECT_EQ(absl::string_view(loc1.file_name()), loc2.file_name());
48
+ }
49
+
50
+ TEST(SourceLocationTest, ConversionFromStdSourceLocationWorks) {
51
+ #ifndef ABSL_HAVE_STD_SOURCE_LOCATION
52
+ GTEST_SKIP() << "std::source_location is not available";
53
+ #else
54
+ constexpr SourceLocation loc1 = std::source_location::current();
55
+ const std::source_location loc2 = std::source_location::current();
56
+ EXPECT_EQ(loc1.line(), loc2.line() - 1);
57
+ EXPECT_EQ(absl::string_view(loc1.file_name()), loc2.file_name());
58
+ #endif
59
+ }
60
+
61
+ TEST(SourceLocationTest, CopyConstructionWorks) {
62
+ constexpr SourceLocation location = absl::SourceLocation::current();
63
+ constexpr int line = __LINE__ - 1;
64
+
65
+ EXPECT_EQ(location.line(), line);
66
+ EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
67
+ }
68
+
69
+ TEST(SourceLocationTest, CopyAssignmentWorks) {
70
+ SourceLocation location;
71
+ location = absl::SourceLocation::current();
72
+ constexpr int line = __LINE__ - 1;
73
+
74
+ EXPECT_EQ(location.line(), line);
75
+ EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
76
+ }
77
+
78
+ SourceLocation Echo(const SourceLocation& location) { return location; }
79
+
80
+ TEST(SourceLocationTest, ExpectedUsageWorks) {
81
+ SourceLocation location = Echo(absl::SourceLocation::current());
82
+ constexpr int line = __LINE__ - 1;
83
+
84
+ EXPECT_EQ(location.line(), line);
85
+ EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
86
+ }
87
+
88
+ TEST(SourceLocationTest, CurrentWorks) {
89
+ constexpr SourceLocation location = SourceLocation::current();
90
+ constexpr int line = __LINE__ - 1;
91
+
92
+ EXPECT_EQ(location.line(), line);
93
+ EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
94
+ }
95
+
96
+ SourceLocation FuncWithDefaultParam(
97
+ SourceLocation loc = SourceLocation::current()) {
98
+ return loc;
99
+ }
100
+
101
+ TEST(SourceLocationTest, CurrentWorksAsDefaultParam) {
102
+ SourceLocation location = FuncWithDefaultParam();
103
+ constexpr int line = __LINE__ - 1;
104
+
105
+ EXPECT_EQ(location.line(), line);
106
+ EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
107
+ }
108
+
109
+ #endif
110
+
111
+ template <typename T>
112
+ bool TryPassLineAndFile(decltype(T::current(0, ""))*) {
113
+ return true;
114
+ }
115
+ template <typename T>
116
+ bool TryPassLineAndFile(decltype(T::current({}, 0, ""))*) {
117
+ return true;
118
+ }
119
+ template <typename T>
120
+ bool TryPassLineAndFile(decltype(T::current(typename T::Tag{}, 0, ""))*) {
121
+ return true;
122
+ }
123
+ template <typename T>
124
+ bool TryPassLineAndFile(...) {
125
+ return false;
126
+ }
127
+
128
+ TEST(SourceLocationTest, CantPassLineAndFile) {
129
+ #ifdef ABSL_HAVE_STD_SOURCE_LOCATION
130
+ using StdSourceLocation = std::source_location;
131
+ #else
132
+ using StdSourceLocation = void;
133
+ #endif
134
+ if constexpr (!std::is_same_v<absl::SourceLocation, StdSourceLocation>) {
135
+ EXPECT_FALSE(TryPassLineAndFile<absl::SourceLocation>(nullptr));
136
+ }
137
+ }
138
+
139
+ } // namespace
@@ -30,18 +30,17 @@
30
30
  // `Span<const T>` when such types may be difficult to identify due to issues
31
31
  // with implicit conversion.
32
32
  //
33
- // The C++20 draft standard includes a `std::span` type. As of June 2020, the
33
+ // The C++20 standard includes a `std::span` type. As of January 2026, the
34
34
  // differences between `absl::Span` and `std::span` are:
35
35
  // * `absl::Span` has `operator==` (which is likely a design bug,
36
36
  // per https://abseil.io/blog/20180531-regular-types)
37
37
  // * `absl::Span` has the factory functions `MakeSpan()` and
38
38
  // `MakeConstSpan()`
39
39
  // * bounds-checked access to `absl::Span` is accomplished with `at()`
40
+ // however `std::span` now supports the same as of the draft C++26 standard
40
41
  // * `absl::Span` has compiler-provided move and copy constructors and
41
42
  // assignment. This is due to them being specified as `constexpr`, but that
42
43
  // implies const in C++11.
43
- // * A read-only `absl::Span<const T>` can be implicitly constructed from an
44
- // initializer list.
45
44
  // * `absl::Span` has no `bytes()`, `size_bytes()`, `as_bytes()`, or
46
45
  // `as_writable_bytes()` methods
47
46
  // * `absl::Span` has no static extent template parameter, nor constructors
@@ -65,11 +64,12 @@
65
64
 
66
65
  #include "absl/base/attributes.h"
67
66
  #include "absl/base/config.h"
68
- #include "absl/base/internal/throw_delegate.h"
67
+ #include "absl/base/internal/hardening.h"
69
68
  #include "absl/base/macros.h"
70
69
  #include "absl/base/nullability.h"
71
70
  #include "absl/base/optimization.h"
72
71
  #include "absl/base/port.h" // TODO(strel): remove this include
72
+ #include "absl/base/throw_delegate.h"
73
73
  #include "absl/hash/internal/weakly_mixed_integer.h"
74
74
  #include "absl/meta/type_traits.h"
75
75
  #include "absl/types/internal/span.h"
@@ -205,7 +205,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
205
205
 
206
206
  public:
207
207
  using element_type = T;
208
- using value_type = absl::remove_cv_t<T>;
208
+ using value_type = std::remove_cv_t<T>;
209
209
  // TODO(b/316099902) - pointer should be absl_nullable, but this makes it hard
210
210
  // to recognize foreach loops as safe. absl_nullability_unknown is currently
211
211
  // used to suppress -Wnullability-completeness warnings.
@@ -336,7 +336,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
336
336
  //
337
337
  // Returns a reference to the i'th element of this span.
338
338
  constexpr reference operator[](size_type i) const noexcept {
339
- ABSL_HARDENING_ASSERT(i < size());
339
+ absl::base_internal::HardeningAssertLT(i, size());
340
340
  return ptr_[i];
341
341
  }
342
342
 
@@ -346,8 +346,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
346
346
  constexpr reference at(size_type i) const {
347
347
  return ABSL_PREDICT_TRUE(i < size()) //
348
348
  ? *(data() + i)
349
- : (base_internal::ThrowStdOutOfRange(
350
- "Span::at failed bounds check"),
349
+ : (ThrowStdOutOfRange("Span::at failed bounds check"),
351
350
  *(data() + i));
352
351
  }
353
352
 
@@ -356,7 +355,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
356
355
  // Returns a reference to the first element of this span. The span must not
357
356
  // be empty.
358
357
  constexpr reference front() const noexcept {
359
- ABSL_HARDENING_ASSERT(size() > 0);
358
+ absl::base_internal::HardeningAssertGT(size(), static_cast<size_t>(0));
360
359
  return *data();
361
360
  }
362
361
 
@@ -365,7 +364,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
365
364
  // Returns a reference to the last element of this span. The span must not
366
365
  // be empty.
367
366
  constexpr reference back() const noexcept {
368
- ABSL_HARDENING_ASSERT(size() > 0);
367
+ absl::base_internal::HardeningAssertGT(size(), static_cast<size_t>(0));
369
368
  return *(data() + size() - 1);
370
369
  }
371
370
 
@@ -431,7 +430,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
431
430
  //
432
431
  // Removes the first `n` elements from the span.
433
432
  void remove_prefix(size_type n) noexcept {
434
- ABSL_HARDENING_ASSERT(size() >= n);
433
+ absl::base_internal::HardeningAssertGE(size(), n);
435
434
  ptr_ += n;
436
435
  len_ -= n;
437
436
  }
@@ -440,7 +439,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
440
439
  //
441
440
  // Removes the last `n` elements from the span.
442
441
  void remove_suffix(size_type n) noexcept {
443
- ABSL_HARDENING_ASSERT(size() >= n);
442
+ absl::base_internal::HardeningAssertGE(size(), n);
444
443
  len_ -= n;
445
444
  }
446
445
 
@@ -466,9 +465,8 @@ class ABSL_ATTRIBUTE_VIEW Span {
466
465
  // absl::MakeSpan(vec).subspan(4); // {}
467
466
  // absl::MakeSpan(vec).subspan(5); // throws std::out_of_range
468
467
  constexpr Span subspan(size_type pos = 0, size_type len = npos) const {
469
- return (pos <= size())
470
- ? Span(data() + pos, (std::min)(size() - pos, len))
471
- : (base_internal::ThrowStdOutOfRange("pos > size()"), Span());
468
+ return (pos <= size()) ? Span(data() + pos, (std::min)(size() - pos, len))
469
+ : (ThrowStdOutOfRange("pos > size()"), Span());
472
470
  }
473
471
 
474
472
  // Span::first()
@@ -483,9 +481,8 @@ class ABSL_ATTRIBUTE_VIEW Span {
483
481
  // absl::MakeSpan(vec).first(3); // {10, 11, 12}
484
482
  // absl::MakeSpan(vec).first(5); // throws std::out_of_range
485
483
  constexpr Span first(size_type len) const {
486
- return (len <= size())
487
- ? Span(data(), len)
488
- : (base_internal::ThrowStdOutOfRange("len > size()"), Span());
484
+ return (len <= size()) ? Span(data(), len)
485
+ : (ThrowStdOutOfRange("len > size()"), Span());
489
486
  }
490
487
 
491
488
  // Span::last()
@@ -500,9 +497,8 @@ class ABSL_ATTRIBUTE_VIEW Span {
500
497
  // absl::MakeSpan(vec).last(3); // {11, 12, 13}
501
498
  // absl::MakeSpan(vec).last(5); // throws std::out_of_range
502
499
  constexpr Span last(size_type len) const {
503
- return (len <= size())
504
- ? Span(size() - len + data(), len)
505
- : (base_internal::ThrowStdOutOfRange("len > size()"), Span());
500
+ return (len <= size()) ? Span(size() - len + data(), len)
501
+ : (ThrowStdOutOfRange("len > size()"), Span());
506
502
  }
507
503
 
508
504
  // Support for absl::Hash.
@@ -742,7 +738,7 @@ constexpr Span<T> MakeSpan(T* absl_nullable ptr ABSL_ATTRIBUTE_LIFETIME_BOUND,
742
738
  template <int&... ExplicitArgumentBarrier, typename T>
743
739
  Span<T> MakeSpan(T* absl_nullable begin ABSL_ATTRIBUTE_LIFETIME_BOUND,
744
740
  T* absl_nullable end) noexcept {
745
- ABSL_HARDENING_ASSERT(begin <= end);
741
+ absl::base_internal::HardeningAssertLE(begin, end);
746
742
  return Span<T>(begin, static_cast<size_t>(end - begin));
747
743
  }
748
744
 
@@ -803,7 +799,7 @@ template <int&... ExplicitArgumentBarrier, typename T>
803
799
  Span<const T> MakeConstSpan(T* absl_nullable begin
804
800
  ABSL_ATTRIBUTE_LIFETIME_BOUND,
805
801
  T* absl_nullable end) noexcept {
806
- ABSL_HARDENING_ASSERT(begin <= end);
802
+ absl::base_internal::HardeningAssertLE(begin, end);
807
803
  return Span<const T>(begin, end - begin);
808
804
  }
809
805
 
@@ -23,25 +23,82 @@
23
23
  #ifndef ABSL_TYPES_VARIANT_H_
24
24
  #define ABSL_TYPES_VARIANT_H_
25
25
 
26
+ #include <stddef.h>
27
+
26
28
  #include <variant>
27
29
 
28
30
  #include "absl/base/config.h"
31
+ #include "absl/base/macros.h"
29
32
  #include "absl/utility/utility.h"
30
33
 
31
34
  namespace absl {
32
35
  ABSL_NAMESPACE_BEGIN
33
- using std::bad_variant_access;
34
- using std::get;
35
- using std::get_if;
36
- using std::holds_alternative;
37
- using std::monostate;
38
- using std::variant;
39
- using std::variant_alternative;
40
- using std::variant_alternative_t;
41
- using std::variant_npos;
42
- using std::variant_size;
43
- using std::variant_size_v;
44
- using std::visit;
36
+
37
+ using bad_variant_access ABSL_REFACTOR_INLINE
38
+ = std::bad_variant_access;
39
+
40
+ template <size_t I, typename... Args>
41
+ [[deprecated]] constexpr auto get(Args&&... args)
42
+ -> decltype(std::get<I>(std::forward<Args>(args)...)) {
43
+ return std::get<I>(std::forward<Args>(args)...);
44
+ }
45
+
46
+ template <typename T, typename... Args>
47
+ [[deprecated]] constexpr decltype(std::get<T>(std::declval<Args>()...)) get(
48
+ Args&&... args) {
49
+ return std::get<T>(std::forward<Args>(args)...);
50
+ }
51
+
52
+ template <size_t I, typename... Args>
53
+ [[deprecated]] constexpr decltype(std::get_if<I>(std::declval<Args>()...))
54
+ get_if(Args&&... args) {
55
+ return std::get_if<I>(std::forward<Args>(args)...);
56
+ }
57
+
58
+ template <typename T, typename... Args>
59
+ [[deprecated]] constexpr decltype(std::get_if<T>(std::declval<Args>()...))
60
+ get_if(Args&&... args) {
61
+ return std::get_if<T>(std::forward<Args>(args)...);
62
+ }
63
+
64
+ template <typename T, typename... Args>
65
+ [[deprecated]] constexpr decltype(std::holds_alternative<T>(
66
+ std::declval<Args>()...))
67
+ holds_alternative(Args&&... args) {
68
+ return std::holds_alternative<T>(std::forward<Args>(args)...);
69
+ }
70
+
71
+ using monostate ABSL_REFACTOR_INLINE
72
+ = std::monostate;
73
+
74
+ template <typename... Types>
75
+ using variant ABSL_REFACTOR_INLINE
76
+ = std::variant<Types...>;
77
+
78
+ template <size_t I, typename T>
79
+ using variant_alternative ABSL_REFACTOR_INLINE
80
+ = std::variant_alternative<I, T>;
81
+
82
+ template <size_t I, typename T>
83
+ using variant_alternative_t ABSL_REFACTOR_INLINE
84
+ = std::variant_alternative_t<I, T>;
85
+
86
+ inline constexpr size_t variant_npos ABSL_REFACTOR_INLINE
87
+ = std::variant_npos;
88
+
89
+ template <typename T>
90
+ using variant_size ABSL_REFACTOR_INLINE
91
+ = std::variant_size<T>;
92
+
93
+ template <typename T>
94
+ inline constexpr size_t variant_size_v ABSL_REFACTOR_INLINE
95
+ = std::variant_size_v<T>;
96
+
97
+ template <typename... Args>
98
+ [[deprecated]] constexpr decltype(std::visit(std::declval<Args>()...)) visit(
99
+ Args&&... args) {
100
+ return std::visit(std::forward<Args>(args)...);
101
+ }
45
102
 
46
103
  namespace variant_internal {
47
104
  // Helper visitor for converting a variant<Ts...>` into another type (mostly
@@ -57,23 +114,23 @@ struct ConversionVisitor {
57
114
 
58
115
  // ConvertVariantTo()
59
116
  //
60
- // Helper functions to convert an `absl::variant` to a variant of another set of
117
+ // Helper functions to convert an `std::variant` to a variant of another set of
61
118
  // types, provided that the alternative type of the new variant type can be
62
119
  // converted from any type in the source variant.
63
120
  //
64
121
  // Example:
65
122
  //
66
- // absl::variant<name1, name2, float> InternalReq(const Req&);
123
+ // std::variant<name1, name2, float> InternalReq(const Req&);
67
124
  //
68
125
  // // name1 and name2 are convertible to name
69
- // absl::variant<name, float> ExternalReq(const Req& req) {
70
- // return absl::ConvertVariantTo<absl::variant<name, float>>(
126
+ // std::variant<name, float> ExternalReq(const Req& req) {
127
+ // return absl::ConvertVariantTo<std::variant<name, float>>(
71
128
  // InternalReq(req));
72
129
  // }
73
130
  template <typename To, typename Variant>
74
131
  To ConvertVariantTo(Variant&& variant) {
75
- return absl::visit(variant_internal::ConversionVisitor<To>{},
76
- std::forward<Variant>(variant));
132
+ return std::visit(variant_internal::ConversionVisitor<To>{},
133
+ std::forward<Variant>(variant));
77
134
  }
78
135
 
79
136
  ABSL_NAMESPACE_END