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
@@ -43,6 +43,7 @@
43
43
  #include <string>
44
44
  #include <type_traits>
45
45
  #include <utility>
46
+ #include <variant>
46
47
 
47
48
  #include "absl/base/attributes.h"
48
49
  #include "absl/base/call_once.h"
@@ -53,6 +54,8 @@
53
54
  #include "absl/strings/has_absl_stringify.h"
54
55
  #include "absl/strings/has_ostream_operator.h"
55
56
  #include "absl/strings/str_format.h"
57
+ #include "absl/types/source_location.h"
58
+ #include "absl/types/span.h"
56
59
  #include "absl/types/variant.h"
57
60
  #include "absl/utility/utility.h"
58
61
 
@@ -244,50 +247,50 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
244
247
  // is explicit if and only if the corresponding construction of `T` from `U`
245
248
  // is explicit. (This constructor inherits its explicitness from the
246
249
  // underlying constructor.)
247
- template <typename U, absl::enable_if_t<
250
+ template <typename U, std::enable_if_t<
248
251
  internal_statusor::IsConstructionFromStatusOrValid<
249
252
  false, T, U, false, const U&>::value,
250
253
  int> = 0>
251
254
  StatusOr(const StatusOr<U>& other) // NOLINT
252
255
  : Base(static_cast<const typename StatusOr<U>::Base&>(other)) {}
253
- template <typename U, absl::enable_if_t<
256
+ template <typename U, std::enable_if_t<
254
257
  internal_statusor::IsConstructionFromStatusOrValid<
255
258
  false, T, U, true, const U&>::value,
256
259
  int> = 0>
257
260
  StatusOr(const StatusOr<U>& other ABSL_ATTRIBUTE_LIFETIME_BOUND) // NOLINT
258
261
  : Base(static_cast<const typename StatusOr<U>::Base&>(other)) {}
259
- template <typename U, absl::enable_if_t<
262
+ template <typename U, std::enable_if_t<
260
263
  internal_statusor::IsConstructionFromStatusOrValid<
261
264
  true, T, U, false, const U&>::value,
262
265
  int> = 0>
263
266
  explicit StatusOr(const StatusOr<U>& other)
264
267
  : Base(static_cast<const typename StatusOr<U>::Base&>(other)) {}
265
- template <typename U, absl::enable_if_t<
268
+ template <typename U, std::enable_if_t<
266
269
  internal_statusor::IsConstructionFromStatusOrValid<
267
270
  true, T, U, true, const U&>::value,
268
271
  int> = 0>
269
272
  explicit StatusOr(const StatusOr<U>& other ABSL_ATTRIBUTE_LIFETIME_BOUND)
270
273
  : Base(static_cast<const typename StatusOr<U>::Base&>(other)) {}
271
274
 
272
- template <typename U, absl::enable_if_t<
275
+ template <typename U, std::enable_if_t<
273
276
  internal_statusor::IsConstructionFromStatusOrValid<
274
277
  false, T, U, false, U&&>::value,
275
278
  int> = 0>
276
279
  StatusOr(StatusOr<U>&& other) // NOLINT
277
280
  : Base(static_cast<typename StatusOr<U>::Base&&>(other)) {}
278
- template <typename U, absl::enable_if_t<
281
+ template <typename U, std::enable_if_t<
279
282
  internal_statusor::IsConstructionFromStatusOrValid<
280
283
  false, T, U, true, U&&>::value,
281
284
  int> = 0>
282
285
  StatusOr(StatusOr<U>&& other ABSL_ATTRIBUTE_LIFETIME_BOUND) // NOLINT
283
286
  : Base(static_cast<typename StatusOr<U>::Base&&>(other)) {}
284
- template <typename U, absl::enable_if_t<
287
+ template <typename U, std::enable_if_t<
285
288
  internal_statusor::IsConstructionFromStatusOrValid<
286
289
  true, T, U, false, U&&>::value,
287
290
  int> = 0>
288
291
  explicit StatusOr(StatusOr<U>&& other)
289
292
  : Base(static_cast<typename StatusOr<U>::Base&&>(other)) {}
290
- template <typename U, absl::enable_if_t<
293
+ template <typename U, std::enable_if_t<
291
294
  internal_statusor::IsConstructionFromStatusOrValid<
292
295
  true, T, U, true, U&&>::value,
293
296
  int> = 0>
@@ -314,7 +317,7 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
314
317
  // assignable from `absl::StatusOr<U>` and `StatusOr<T>` cannot be directly
315
318
  // assigned from `StatusOr<U>`.
316
319
  template <typename U,
317
- absl::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
320
+ std::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
318
321
  T, const U&, false>::value,
319
322
  int> = 0>
320
323
  StatusOr& operator=(const StatusOr<U>& other) {
@@ -322,7 +325,7 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
322
325
  return *this;
323
326
  }
324
327
  template <typename U,
325
- absl::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
328
+ std::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
326
329
  T, const U&, true>::value,
327
330
  int> = 0>
328
331
  StatusOr& operator=(const StatusOr<U>& other ABSL_ATTRIBUTE_LIFETIME_BOUND) {
@@ -330,7 +333,7 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
330
333
  return *this;
331
334
  }
332
335
  template <typename U,
333
- absl::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
336
+ std::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
334
337
  T, U&&, false>::value,
335
338
  int> = 0>
336
339
  StatusOr& operator=(StatusOr<U>&& other) {
@@ -338,7 +341,7 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
338
341
  return *this;
339
342
  }
340
343
  template <typename U,
341
- absl::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
344
+ std::enable_if_t<internal_statusor::IsStatusOrAssignmentValid<
342
345
  T, U&&, true>::value,
343
346
  int> = 0>
344
347
  StatusOr& operator=(StatusOr<U>&& other ABSL_ATTRIBUTE_LIFETIME_BOUND) {
@@ -358,18 +361,18 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
358
361
  // In optimized builds, passing absl::OkStatus() here will have the effect
359
362
  // of passing absl::StatusCode::kInternal as a fallback.
360
363
  template <typename U = absl::Status,
361
- absl::enable_if_t<internal_statusor::IsConstructionFromStatusValid<
364
+ std::enable_if_t<internal_statusor::IsConstructionFromStatusValid<
362
365
  false, T, U>::value,
363
366
  int> = 0>
364
367
  StatusOr(U&& v) : Base(std::forward<U>(v)) {}
365
368
 
366
369
  template <typename U = absl::Status,
367
- absl::enable_if_t<internal_statusor::IsConstructionFromStatusValid<
370
+ std::enable_if_t<internal_statusor::IsConstructionFromStatusValid<
368
371
  true, T, U>::value,
369
372
  int> = 0>
370
373
  explicit StatusOr(U&& v) : Base(std::forward<U>(v)) {}
371
374
  template <typename U = absl::Status,
372
- absl::enable_if_t<internal_statusor::IsConstructionFromStatusValid<
375
+ std::enable_if_t<internal_statusor::IsConstructionFromStatusValid<
373
376
  false, T, U>::value,
374
377
  int> = 0>
375
378
  StatusOr& operator=(U&& v) {
@@ -413,9 +416,9 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
413
416
  // Constructs the inner value `T` in-place using the provided args, using the
414
417
  // `T(args...)` constructor.
415
418
  template <typename... Args>
416
- explicit StatusOr(absl::in_place_t, Args&&... args);
419
+ explicit StatusOr(std::in_place_t, Args&&... args);
417
420
  template <typename U, typename... Args>
418
- explicit StatusOr(absl::in_place_t, std::initializer_list<U> ilist,
421
+ explicit StatusOr(std::in_place_t, std::initializer_list<U> ilist,
419
422
  Args&&... args);
420
423
 
421
424
  // Constructs the inner value `T` in-place using the provided args, using the
@@ -426,30 +429,30 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
426
429
  // ambiguity, this constructor is disabled if `U` is a `StatusOr<J>`, where
427
430
  // `J` is convertible to `T`.
428
431
  template <typename U = T,
429
- absl::enable_if_t<internal_statusor::IsConstructionValid<
430
- false, T, U, false>::value,
431
- int> = 0>
432
+ std::enable_if_t<internal_statusor::IsConstructionValid<
433
+ false, T, U, false>::value,
434
+ int> = 0>
432
435
  StatusOr(U&& u) // NOLINT
433
- : StatusOr(absl::in_place, std::forward<U>(u)) {}
436
+ : StatusOr(std::in_place, std::forward<U>(u)) {}
434
437
  template <typename U = T,
435
- absl::enable_if_t<internal_statusor::IsConstructionValid<
436
- false, T, U, true>::value,
437
- int> = 0>
438
+ std::enable_if_t<internal_statusor::IsConstructionValid<
439
+ false, T, U, true>::value,
440
+ int> = 0>
438
441
  StatusOr(U&& u ABSL_ATTRIBUTE_LIFETIME_BOUND) // NOLINT
439
- : StatusOr(absl::in_place, std::forward<U>(u)) {}
442
+ : StatusOr(std::in_place, std::forward<U>(u)) {}
440
443
 
441
444
  template <typename U = T,
442
- absl::enable_if_t<internal_statusor::IsConstructionValid<
443
- true, T, U, false>::value,
444
- int> = 0>
445
+ std::enable_if_t<internal_statusor::IsConstructionValid<
446
+ true, T, U, false>::value,
447
+ int> = 0>
445
448
  explicit StatusOr(U&& u) // NOLINT
446
- : StatusOr(absl::in_place, std::forward<U>(u)) {}
449
+ : StatusOr(std::in_place, std::forward<U>(u)) {}
447
450
  template <typename U = T,
448
- absl::enable_if_t<
451
+ std::enable_if_t<
449
452
  internal_statusor::IsConstructionValid<true, T, U, true>::value,
450
453
  int> = 0>
451
454
  explicit StatusOr(U&& u ABSL_ATTRIBUTE_LIFETIME_BOUND) // NOLINT
452
- : StatusOr(absl::in_place, std::forward<U>(u)) {}
455
+ : StatusOr(std::in_place, std::forward<U>(u)) {}
453
456
 
454
457
  // StatusOr<T>::ok()
455
458
  //
@@ -475,6 +478,36 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
475
478
  ABSL_MUST_USE_RESULT const Status& status() const&;
476
479
  Status status() &&;
477
480
 
481
+ absl::Span<const absl::SourceLocation> GetSourceLocations() const {
482
+ return this->status_.GetSourceLocations();
483
+ }
484
+ // Appends the `loc` to the current location chain inside the status, iff the
485
+ // status-or is non-ok and contains a non-empty message.
486
+ void AddSourceLocation(
487
+ absl::SourceLocation loc = absl::SourceLocation::current()) {
488
+ this->status_.AddSourceLocation(loc);
489
+ }
490
+
491
+ // StatusOr<T>::WithSourceLocation()
492
+ //
493
+ // Appends the `loc` to the current location chain inside the status iff the
494
+ // status-or is non-ok and contains a non-empty message, and returns an rvalue
495
+ // reference to `*this`.
496
+ //
497
+ // Example:
498
+ //
499
+ // StatusOr<int> Finalize(...);
500
+ //
501
+ // StatusOr<int> DoSomething(...) {
502
+ // ...
503
+ // return Finalize().WithSourceLocation();
504
+ // }
505
+ ABSL_MUST_USE_RESULT StatusOr<T>&& WithSourceLocation(
506
+ absl::SourceLocation loc = absl::SourceLocation::current()) && {
507
+ AddSourceLocation(loc);
508
+ return std::move(*this);
509
+ }
510
+
478
511
  // StatusOr<T>::value()
479
512
  //
480
513
  // Returns a reference to the held value if `this->ok()`. Otherwise, throws
@@ -591,7 +624,7 @@ class StatusOr : private internal_statusor::OperatorBase<T>,
591
624
 
592
625
  template <
593
626
  typename U, typename... Args,
594
- absl::enable_if_t<
627
+ std::enable_if_t<
595
628
  std::is_constructible<T, std::initializer_list<U>&, Args&&...>::value,
596
629
  int> = 0>
597
630
  T& emplace(std::initializer_list<U> ilist,
@@ -714,14 +747,14 @@ inline void StatusOr<T>::Assign(StatusOr<U>&& other) {
714
747
  }
715
748
  template <typename T>
716
749
  template <typename... Args>
717
- StatusOr<T>::StatusOr(absl::in_place_t, Args&&... args)
718
- : Base(absl::in_place, std::forward<Args>(args)...) {}
750
+ StatusOr<T>::StatusOr(std::in_place_t, Args&&... args)
751
+ : Base(std::in_place, std::forward<Args>(args)...) {}
719
752
 
720
753
  template <typename T>
721
754
  template <typename U, typename... Args>
722
- StatusOr<T>::StatusOr(absl::in_place_t, std::initializer_list<U> ilist,
755
+ StatusOr<T>::StatusOr(std::in_place_t, std::initializer_list<U> ilist,
723
756
  Args&&... args)
724
- : Base(absl::in_place, ilist, std::forward<Args>(args)...) {}
757
+ : Base(std::in_place, ilist, std::forward<Args>(args)...) {}
725
758
 
726
759
  template <typename T>
727
760
  const Status& StatusOr<T>::status() const& {
@@ -14,6 +14,7 @@
14
14
 
15
15
  #include "absl/status/statusor.h"
16
16
 
17
+ #include <any>
17
18
  #include <array>
18
19
  #include <cstddef>
19
20
  #include <cstdint>
@@ -25,6 +26,7 @@
25
26
  #include <string>
26
27
  #include <type_traits>
27
28
  #include <utility>
29
+ #include <variant>
28
30
  #include <vector>
29
31
 
30
32
  #include "gmock/gmock.h"
@@ -35,8 +37,7 @@
35
37
  #include "absl/status/status_matchers.h"
36
38
  #include "absl/strings/str_cat.h"
37
39
  #include "absl/strings/string_view.h"
38
- #include "absl/types/any.h"
39
- #include "absl/types/variant.h"
40
+ #include "absl/types/source_location.h"
40
41
  #include "absl/utility/utility.h"
41
42
 
42
43
  namespace {
@@ -114,7 +115,7 @@ class CopyNoAssign {
114
115
 
115
116
  absl::StatusOr<std::unique_ptr<int>> ReturnUniquePtr() {
116
117
  // Uses implicit constructor from T&&
117
- return absl::make_unique<int>(0);
118
+ return std::make_unique<int>(0);
118
119
  }
119
120
 
120
121
  TEST(StatusOr, ElementType) {
@@ -357,7 +358,7 @@ struct Foo {
357
358
  };
358
359
 
359
360
  TEST(StatusOr, InPlaceConstruction) {
360
- EXPECT_THAT(absl::StatusOr<Foo>(absl::in_place, 10),
361
+ EXPECT_THAT(absl::StatusOr<Foo>(std::in_place, 10),
361
362
  IsOkAndHolds(Field(&Foo::x, 10)));
362
363
  }
363
364
 
@@ -369,8 +370,8 @@ struct InPlaceHelper {
369
370
  };
370
371
 
371
372
  TEST(StatusOr, InPlaceInitListConstruction) {
372
- absl::StatusOr<InPlaceHelper> status_or(absl::in_place, {10, 11, 12},
373
- absl::make_unique<int>(13));
373
+ absl::StatusOr<InPlaceHelper> status_or(std::in_place, {10, 11, 12},
374
+ std::make_unique<int>(13));
374
375
  EXPECT_THAT(status_or, IsOkAndHolds(AllOf(
375
376
  Field(&InPlaceHelper::x, ElementsAre(10, 11, 12)),
376
377
  Field(&InPlaceHelper::y, Pointee(13)))));
@@ -389,9 +390,9 @@ TEST(StatusOr, Emplace) {
389
390
  }
390
391
 
391
392
  TEST(StatusOr, EmplaceInitializerList) {
392
- absl::StatusOr<InPlaceHelper> status_or(absl::in_place, {10, 11, 12},
393
- absl::make_unique<int>(13));
394
- status_or.emplace({1, 2, 3}, absl::make_unique<int>(4));
393
+ absl::StatusOr<InPlaceHelper> status_or(std::in_place, {10, 11, 12},
394
+ std::make_unique<int>(13));
395
+ status_or.emplace({1, 2, 3}, std::make_unique<int>(4));
395
396
  EXPECT_THAT(status_or,
396
397
  IsOkAndHolds(AllOf(Field(&InPlaceHelper::x, ElementsAre(1, 2, 3)),
397
398
  Field(&InPlaceHelper::y, Pointee(4)))));
@@ -399,7 +400,7 @@ TEST(StatusOr, EmplaceInitializerList) {
399
400
  EXPECT_FALSE(status_or.ok());
400
401
  EXPECT_EQ(status_or.status().code(), absl::StatusCode::kInvalidArgument);
401
402
  EXPECT_EQ(status_or.status().message(), "msg");
402
- status_or.emplace({1, 2, 3}, absl::make_unique<int>(4));
403
+ status_or.emplace({1, 2, 3}, std::make_unique<int>(4));
403
404
  EXPECT_THAT(status_or,
404
405
  IsOkAndHolds(AllOf(Field(&InPlaceHelper::x, ElementsAre(1, 2, 3)),
405
406
  Field(&InPlaceHelper::y, Pointee(4)))));
@@ -696,13 +697,13 @@ TEST(StatusOr, ExplicitConstruction) {
696
697
  TEST(StatusOr, ImplicitConstruction) {
697
698
  // Check implicit casting works.
698
699
  auto status_or =
699
- absl::implicit_cast<absl::StatusOr<absl::variant<int, std::string>>>(10);
700
+ absl::implicit_cast<absl::StatusOr<std::variant<int, std::string>>>(10);
700
701
  EXPECT_THAT(status_or, IsOkAndHolds(VariantWith<int>(10)));
701
702
  }
702
703
 
703
704
  TEST(StatusOr, ImplicitConstructionFromInitliazerList) {
704
705
  // Note: dropping the explicit std::initializer_list<int> is not supported
705
- // by absl::StatusOr or absl::optional.
706
+ // by absl::StatusOr or std::optional.
706
707
  auto status_or =
707
708
  absl::implicit_cast<absl::StatusOr<std::vector<int>>>({{10, 20, 30}});
708
709
  EXPECT_THAT(status_or, IsOkAndHolds(ElementsAre(10, 20, 30)));
@@ -710,7 +711,7 @@ TEST(StatusOr, ImplicitConstructionFromInitliazerList) {
710
711
 
711
712
  TEST(StatusOr, UniquePtrImplicitConstruction) {
712
713
  auto status_or = absl::implicit_cast<absl::StatusOr<std::unique_ptr<Base1>>>(
713
- absl::make_unique<Derived>());
714
+ std::make_unique<Derived>());
714
715
  EXPECT_THAT(status_or, IsOkAndHolds(Ne(nullptr)));
715
716
  }
716
717
 
@@ -796,49 +797,49 @@ TEST(StatusOr, CopyAndMoveAbility) {
796
797
  }
797
798
 
798
799
  TEST(StatusOr, StatusOrAnyCopyAndMoveConstructorTests) {
799
- absl::StatusOr<absl::any> status_or = CopyDetector(10);
800
- absl::StatusOr<absl::any> status_error = absl::InvalidArgumentError("foo");
800
+ absl::StatusOr<std::any> status_or = CopyDetector(10);
801
+ absl::StatusOr<std::any> status_error = absl::InvalidArgumentError("foo");
801
802
  EXPECT_THAT(
802
803
  status_or,
803
804
  IsOkAndHolds(AnyWith<CopyDetector>(CopyDetectorHas(10, true, false))));
804
- absl::StatusOr<absl::any> a = status_or;
805
+ absl::StatusOr<std::any> a = status_or;
805
806
  EXPECT_THAT(
806
807
  a, IsOkAndHolds(AnyWith<CopyDetector>(CopyDetectorHas(10, false, true))));
807
- absl::StatusOr<absl::any> a_err = status_error;
808
+ absl::StatusOr<std::any> a_err = status_error;
808
809
  EXPECT_THAT(a_err, Not(IsOk()));
809
810
 
810
- const absl::StatusOr<absl::any>& cref = status_or;
811
+ const absl::StatusOr<std::any>& cref = status_or;
811
812
  // No lint for no-change copy.
812
- absl::StatusOr<absl::any> b = cref; // NOLINT
813
+ absl::StatusOr<std::any> b = cref; // NOLINT
813
814
  EXPECT_THAT(
814
815
  b, IsOkAndHolds(AnyWith<CopyDetector>(CopyDetectorHas(10, false, true))));
815
- const absl::StatusOr<absl::any>& cref_err = status_error;
816
+ const absl::StatusOr<std::any>& cref_err = status_error;
816
817
  // No lint for no-change copy.
817
- absl::StatusOr<absl::any> b_err = cref_err; // NOLINT
818
+ absl::StatusOr<std::any> b_err = cref_err; // NOLINT
818
819
  EXPECT_THAT(b_err, Not(IsOk()));
819
820
 
820
- absl::StatusOr<absl::any> c = std::move(status_or);
821
+ absl::StatusOr<std::any> c = std::move(status_or);
821
822
  EXPECT_THAT(
822
823
  c, IsOkAndHolds(AnyWith<CopyDetector>(CopyDetectorHas(10, true, false))));
823
- absl::StatusOr<absl::any> c_err = std::move(status_error);
824
+ absl::StatusOr<std::any> c_err = std::move(status_error);
824
825
  EXPECT_THAT(c_err, Not(IsOk()));
825
826
  }
826
827
 
827
828
  TEST(StatusOr, StatusOrAnyCopyAndMoveAssignment) {
828
- absl::StatusOr<absl::any> status_or = CopyDetector(10);
829
- absl::StatusOr<absl::any> status_error = absl::InvalidArgumentError("foo");
830
- absl::StatusOr<absl::any> a;
829
+ absl::StatusOr<std::any> status_or = CopyDetector(10);
830
+ absl::StatusOr<std::any> status_error = absl::InvalidArgumentError("foo");
831
+ absl::StatusOr<std::any> a;
831
832
  a = status_or;
832
833
  EXPECT_THAT(
833
834
  a, IsOkAndHolds(AnyWith<CopyDetector>(CopyDetectorHas(10, false, true))));
834
835
  a = status_error;
835
836
  EXPECT_THAT(a, Not(IsOk()));
836
837
 
837
- const absl::StatusOr<absl::any>& cref = status_or;
838
+ const absl::StatusOr<std::any>& cref = status_or;
838
839
  a = cref;
839
840
  EXPECT_THAT(
840
841
  a, IsOkAndHolds(AnyWith<CopyDetector>(CopyDetectorHas(10, false, true))));
841
- const absl::StatusOr<absl::any>& cref_err = status_error;
842
+ const absl::StatusOr<std::any>& cref_err = status_error;
842
843
  a = cref_err;
843
844
  EXPECT_THAT(a, Not(IsOk()));
844
845
  a = std::move(status_or);
@@ -876,15 +877,15 @@ TEST(StatusOr, StatusOrCopyAndMoveTestsAssignment) {
876
877
  }
877
878
 
878
879
  TEST(StatusOr, AbslAnyAssignment) {
879
- EXPECT_FALSE((std::is_assignable<absl::StatusOr<absl::any>,
880
+ EXPECT_FALSE((std::is_assignable<absl::StatusOr<std::any>,
880
881
  absl::StatusOr<int>>::value));
881
- absl::StatusOr<absl::any> status_or;
882
+ absl::StatusOr<std::any> status_or;
882
883
  status_or = absl::InvalidArgumentError("foo");
883
884
  EXPECT_THAT(status_or, Not(IsOk()));
884
885
  }
885
886
 
886
887
  TEST(StatusOr, ImplicitAssignment) {
887
- absl::StatusOr<absl::variant<int, std::string>> status_or;
888
+ absl::StatusOr<std::variant<int, std::string>> status_or;
888
889
  status_or = 10;
889
890
  EXPECT_THAT(status_or, IsOkAndHolds(VariantWith<int>(10)));
890
891
  }
@@ -902,7 +903,7 @@ TEST(StatusOr, ImplicitCastFromInitializerList) {
902
903
 
903
904
  TEST(StatusOr, UniquePtrImplicitAssignment) {
904
905
  absl::StatusOr<std::unique_ptr<Base1>> status_or;
905
- status_or = absl::make_unique<Derived>();
906
+ status_or = std::make_unique<Derived>();
906
907
  EXPECT_THAT(status_or, IsOkAndHolds(Ne(nullptr)));
907
908
  }
908
909
 
@@ -1397,14 +1398,14 @@ TEST(StatusOr, ValueOrDefault) {
1397
1398
  }
1398
1399
 
1399
1400
  TEST(StatusOr, MoveOnlyValueOrOk) {
1400
- EXPECT_THAT(absl::StatusOr<std::unique_ptr<int>>(absl::make_unique<int>(0))
1401
- .value_or(absl::make_unique<int>(-1)),
1401
+ EXPECT_THAT(absl::StatusOr<std::unique_ptr<int>>(std::make_unique<int>(0))
1402
+ .value_or(std::make_unique<int>(-1)),
1402
1403
  Pointee(0));
1403
1404
  }
1404
1405
 
1405
1406
  TEST(StatusOr, MoveOnlyValueOrDefault) {
1406
1407
  EXPECT_THAT(absl::StatusOr<std::unique_ptr<int>>(absl::CancelledError())
1407
- .value_or(absl::make_unique<int>(-1)),
1408
+ .value_or(std::make_unique<int>(-1)),
1408
1409
  Pointee(-1));
1409
1410
  }
1410
1411
 
@@ -1800,6 +1801,102 @@ TEST(StatusOr, ErrorPrinting) {
1800
1801
  EXPECT_THAT(absl::StrCat(print_me), error_matcher);
1801
1802
  }
1802
1803
 
1804
+ #ifdef ABSL_INTERNAL_HAVE_BUILTIN_LINE_FILE
1805
+ #define GET_SOURCE_LOCATION(offset) __builtin_LINE() - offset
1806
+ #else
1807
+ #define GET_SOURCE_LOCATION(offset) 1
1808
+ #endif
1809
+
1810
+ template <typename T>
1811
+ void CheckSourceLocation(
1812
+ const absl::StatusOr<T>& status_or, std::vector<int> lines = {},
1813
+ absl::SourceLocation loc = absl::SourceLocation::current()) {
1814
+ ASSERT_EQ(status_or.GetSourceLocations().size(), lines.size())
1815
+ << "Size check failed at " << loc.line();
1816
+ for (size_t i = 0; i < lines.size(); ++i) {
1817
+ EXPECT_EQ(absl::string_view(status_or.GetSourceLocations()[i].file_name()),
1818
+ absl::string_view(loc.file_name()))
1819
+ << "File name check failed at " << loc.line();
1820
+ EXPECT_EQ(status_or.GetSourceLocations()[i].line(), lines[i])
1821
+ << "Line check failed at " << loc.line();
1822
+ }
1823
+ }
1824
+
1825
+ TEST(StatusOr, AddSourceLocation) {
1826
+ constexpr int kMaxIter = 10;
1827
+ {
1828
+ // Status that ignores source location.
1829
+ absl::StatusOr<int> status_ignores_source_location[] = {
1830
+ 123, absl::Status(absl::StatusCode::kInternal, "")};
1831
+ for (absl::StatusOr<int>& s : status_ignores_source_location) {
1832
+ for (int i = 0; i < kMaxIter; ++i) {
1833
+ s.AddSourceLocation(absl::SourceLocation::current());
1834
+ s.AddSourceLocation(absl::SourceLocation());
1835
+ }
1836
+ CheckSourceLocation(s);
1837
+ }
1838
+ }
1839
+ {
1840
+ // Default SourceLocation is not added.
1841
+ absl::StatusOr<int> status = absl::Status(
1842
+ absl::StatusCode::kInternal, "foo", absl::SourceLocation::current());
1843
+ int line = GET_SOURCE_LOCATION(1);
1844
+ for (int i = 0; i < kMaxIter; ++i) {
1845
+ status.AddSourceLocation(absl::SourceLocation());
1846
+ }
1847
+ CheckSourceLocation(status, {line});
1848
+ }
1849
+ {
1850
+ // Default SourceLocation is not added.
1851
+ absl::StatusOr<int> status = absl::Status(
1852
+ absl::StatusCode::kInternal, "foo", absl::SourceLocation::current());
1853
+ int line = GET_SOURCE_LOCATION(1);
1854
+ std::vector<int> lines = {line};
1855
+ lines.reserve(1 + kMaxIter);
1856
+ for (int i = 0; i < kMaxIter; ++i) {
1857
+ status.AddSourceLocation(absl::SourceLocation::current());
1858
+ lines.push_back(GET_SOURCE_LOCATION(1));
1859
+ }
1860
+ CheckSourceLocation(status, lines);
1861
+ }
1862
+ }
1863
+
1864
+ absl::StatusOr<int>&& IsRvalueStatus(absl::StatusOr<int>&& s) {
1865
+ return std::move(s);
1866
+ }
1867
+
1868
+ TEST(StatusOr, WithSourceLocationMove) {
1869
+ absl::StatusOr<int> original = absl::Status(
1870
+ absl::StatusCode::kInternal, "message", absl::SourceLocation::current());
1871
+ int line = GET_SOURCE_LOCATION(1);
1872
+
1873
+ const absl::StatusOr<int> status_or = IsRvalueStatus(
1874
+ std::move(original).WithSourceLocation(absl::SourceLocation::current()));
1875
+ int line2 = GET_SOURCE_LOCATION(1);
1876
+
1877
+ CheckSourceLocation(status_or, {line, line2});
1878
+ EXPECT_FALSE(status_or.ok());
1879
+ }
1880
+
1881
+ TEST(StatusOr, WithSourceLocationReturn) {
1882
+ absl::SourceLocation loc1 = absl::SourceLocation::current();
1883
+ int line1 = GET_SOURCE_LOCATION(1);
1884
+ absl::SourceLocation loc2 = absl::SourceLocation::current();
1885
+ int line2 = GET_SOURCE_LOCATION(1);
1886
+
1887
+ const auto return_error = [&loc1]() -> absl::StatusOr<int> {
1888
+ return absl::InvalidArgumentError("I am error", loc1);
1889
+ };
1890
+ const auto return_error_with_source_location =
1891
+ [&return_error, &loc2]() -> absl::StatusOr<int> {
1892
+ return return_error().WithSourceLocation(loc2);
1893
+ };
1894
+
1895
+ absl::StatusOr<int> status_or = return_error_with_source_location();
1896
+ CheckSourceLocation(status_or, {line1, line2});
1897
+ EXPECT_FALSE(status_or.ok());
1898
+ }
1899
+
1803
1900
  TEST(StatusOr, SupportsReferenceTypes) {
1804
1901
  int i = 1;
1805
1902
  absl::StatusOr<int&> s = i;