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
@@ -12,6 +12,19 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
+ // All of the data that passes through this code is trusted because it flows
16
+ // through a closed loop within the absl::LogMessage object. It is not a robust
17
+ // protocol buffer encoder or decoder.
18
+ //
19
+ // Encoding: When `LOG(INFO) << "foo"` is called, the library uses the Encode*
20
+ // functions to build a protocol buffer in a private, fixed-size internal buffer
21
+ // (`LogMessageData::encoded_buf`).
22
+ //
23
+ // Decoding: During the same logging call, `LogMessage::Flush()` calls
24
+ // `FinalizeEncodingAndFormat()`, which uses `ProtoField::DecodeFrom` to parse
25
+ // that same internal buffer to generate the human-readable string for
26
+ // text-based log sinks.
27
+
15
28
  #include "absl/log/internal/proto.h"
16
29
 
17
30
  #include <algorithm>
@@ -16,11 +16,11 @@
16
16
  #include "absl/log/internal/structured_proto.h"
17
17
 
18
18
  #include <cstdint>
19
+ #include <variant>
19
20
 
20
21
  #include "absl/base/config.h"
21
22
  #include "absl/log/internal/proto.h"
22
23
  #include "absl/types/span.h"
23
- #include "absl/types/variant.h"
24
24
 
25
25
  namespace absl {
26
26
  ABSL_NAMESPACE_BEGIN
@@ -81,11 +81,11 @@ struct I32EncoderVisitor final {
81
81
  // Handles protobuf-encoding a type contained inside `StructuredProtoField`.
82
82
  struct EncoderVisitor final {
83
83
  bool operator()(StructuredProtoField::Varint varint) {
84
- return absl::visit(VarintEncoderVisitor{field_number, buf}, varint);
84
+ return std::visit(VarintEncoderVisitor{field_number, buf}, varint);
85
85
  }
86
86
 
87
87
  bool operator()(StructuredProtoField::I64 i64) {
88
- return absl::visit(I64EncoderVisitor{field_number, buf}, i64);
88
+ return std::visit(I64EncoderVisitor{field_number, buf}, i64);
89
89
  }
90
90
 
91
91
  bool operator()(StructuredProtoField::LengthDelimited length_delimited) {
@@ -95,7 +95,7 @@ struct EncoderVisitor final {
95
95
  }
96
96
 
97
97
  bool operator()(StructuredProtoField::I32 i32) {
98
- return absl::visit(I32EncoderVisitor{field_number, buf}, i32);
98
+ return std::visit(I32EncoderVisitor{field_number, buf}, i32);
99
99
  }
100
100
 
101
101
  uint64_t field_number;
@@ -106,7 +106,7 @@ struct EncoderVisitor final {
106
106
 
107
107
  bool EncodeStructuredProtoField(StructuredProtoField field,
108
108
  absl::Span<char>& buf) {
109
- return absl::visit(EncoderVisitor{field.field_number, buf}, field.value);
109
+ return std::visit(EncoderVisitor{field.field_number, buf}, field.value);
110
110
  }
111
111
 
112
112
  } // namespace log_internal
@@ -21,6 +21,7 @@
21
21
 
22
22
  #include <cstddef>
23
23
  #include <cstdint>
24
+ #include <variant>
24
25
 
25
26
  #include "absl/base/config.h"
26
27
  #include "absl/log/internal/proto.h"
@@ -35,11 +36,11 @@ namespace log_internal {
35
36
  struct StructuredProtoField final {
36
37
  // Numeric type encoded with varint encoding:
37
38
  // https://protobuf.dev/programming-guides/encoding/#varints
38
- using Varint = absl::variant<uint64_t, int64_t, uint32_t, int32_t, bool>;
39
+ using Varint = std::variant<uint64_t, int64_t, uint32_t, int32_t, bool>;
39
40
 
40
41
  // Fixed-length 64-bit integer encoding:
41
42
  // https://protobuf.dev/programming-guides/encoding/#non-varints
42
- using I64 = absl::variant<uint64_t, int64_t, double>;
43
+ using I64 = std::variant<uint64_t, int64_t, double>;
43
44
 
44
45
  // Length-delimited record type (string, sub-message):
45
46
  // https://protobuf.dev/programming-guides/encoding/#length-types
@@ -47,11 +48,11 @@ struct StructuredProtoField final {
47
48
 
48
49
  // Fixed-length 32-bit integer encoding:
49
50
  // https://protobuf.dev/programming-guides/encoding/#non-varints
50
- using I32 = absl::variant<uint32_t, int32_t, float>;
51
+ using I32 = std::variant<uint32_t, int32_t, float>;
51
52
 
52
53
  // Valid record type:
53
54
  // https://protobuf.dev/programming-guides/encoding/#structure
54
- using Value = absl::variant<Varint, I64, LengthDelimited, I32>;
55
+ using Value = std::variant<Varint, I64, LengthDelimited, I32>;
55
56
 
56
57
  // Field number for the protobuf value.
57
58
  uint64_t field_number;
@@ -88,7 +89,7 @@ inline size_t BufferSizeForStructuredProtoField(StructuredProtoField field) {
88
89
  uint64_t field_number;
89
90
  };
90
91
 
91
- return absl::visit(BufferSizeVisitor{field.field_number}, field.value);
92
+ return std::visit(BufferSizeVisitor{field.field_number}, field.value);
92
93
  }
93
94
 
94
95
  // Encodes `field` into `buf` using protobuf encoding.
@@ -71,7 +71,7 @@ INSTANTIATE_TEST_SUITE_P(
71
71
  {
72
72
  42,
73
73
  StructuredProtoField::Value{
74
- absl::in_place_type<StructuredProtoField::Varint>,
74
+ std::in_place_type<StructuredProtoField::Varint>,
75
75
  int32_t{23},
76
76
  },
77
77
  },
@@ -82,7 +82,7 @@ INSTANTIATE_TEST_SUITE_P(
82
82
  {
83
83
  42,
84
84
  StructuredProtoField::Value{
85
- absl::in_place_type<StructuredProtoField::I64>,
85
+ std::in_place_type<StructuredProtoField::I64>,
86
86
  int64_t{23},
87
87
  },
88
88
  },
@@ -103,7 +103,7 @@ INSTANTIATE_TEST_SUITE_P(
103
103
  {
104
104
  42,
105
105
  StructuredProtoField::Value{
106
- absl::in_place_type<StructuredProtoField::I32>,
106
+ std::in_place_type<StructuredProtoField::I32>,
107
107
  int32_t{23},
108
108
  },
109
109
  },
@@ -20,6 +20,7 @@
20
20
  #include <atomic>
21
21
  #include <functional>
22
22
  #include <memory>
23
+ #include <optional>
23
24
  #include <string>
24
25
  #include <utility>
25
26
  #include <vector>
@@ -38,7 +39,6 @@
38
39
  #include "absl/strings/string_view.h"
39
40
  #include "absl/strings/strip.h"
40
41
  #include "absl/synchronization/mutex.h"
41
- #include "absl/types/optional.h"
42
42
 
43
43
  namespace absl {
44
44
  ABSL_NAMESPACE_BEGIN
@@ -189,7 +189,7 @@ int AppendVModuleLocked(absl::string_view module_pattern, int log_level)
189
189
  // Allocates memory.
190
190
  int PrependVModuleLocked(absl::string_view module_pattern, int log_level)
191
191
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(mutex) {
192
- absl::optional<int> old_log_level;
192
+ std::optional<int> old_log_level;
193
193
  for (const auto& info : get_vmodule_info()) {
194
194
  if (FNMatch(info.module_pattern, module_pattern)) {
195
195
  old_log_level = info.vlog_level;
@@ -45,7 +45,7 @@ class SyntheticBinary {
45
45
  const size_t max_sites_per_tu,
46
46
  const int num_shuffles) {
47
47
  per_tu_data_.reserve(num_tus);
48
- auto sites = absl::make_unique<VLogSite *[]>(num_tus * max_sites_per_tu);
48
+ auto sites = std::make_unique<VLogSite*[]>(num_tus * max_sites_per_tu);
49
49
  for (size_t i = 0; i < num_tus; i++) {
50
50
  const std::string filename =
51
51
  absl::StrCat("directory-", i / 100, "/subdirectory-", i % 100 / 10,
@@ -55,7 +55,7 @@ class SyntheticBinary {
55
55
  absl::LogUniform<size_t>(bitgen_, 1, max_sites_per_tu),
56
56
  absl::LogUniform<size_t>(bitgen_, 0,
57
57
  max_extra_static_data_bytes_per_tu));
58
- auto buf = absl::make_unique<char[]>(layout.AllocSize());
58
+ auto buf = std::make_unique<char[]>(layout.AllocSize());
59
59
  layout.PoisonPadding(buf.get());
60
60
  memcpy(layout.Pointer<0>(buf.get()), filename.c_str(),
61
61
  filename.size() + 1);
@@ -78,7 +78,7 @@ class SyntheticBinary {
78
78
  std::memory_order_seq_cst);
79
79
  }
80
80
  // Now do some shufflin'.
81
- auto new_sites = absl::make_unique<VLogSite *[]>(num_sites_);
81
+ auto new_sites = std::make_unique<VLogSite*[]>(num_sites_);
82
82
  for (int shuffle_num = 0; shuffle_num < num_shuffles; shuffle_num++) {
83
83
  // Each shuffle cuts the ring into three pieces and rearranges them.
84
84
  const size_t cut_a = absl::Uniform(bitgen_, size_t{0}, num_sites_);
@@ -19,6 +19,7 @@
19
19
  #include <iomanip>
20
20
  #include <ios>
21
21
  #include <limits>
22
+ #include <optional>
22
23
  #include <ostream>
23
24
  #include <sstream>
24
25
  #include <string>
@@ -28,6 +29,7 @@
28
29
  #ifdef __ANDROID__
29
30
  #include <android/api-level.h>
30
31
  #endif
32
+
31
33
  #include "gmock/gmock.h"
32
34
  #include "gtest/gtest.h"
33
35
  #include "absl/base/config.h"
@@ -39,7 +41,7 @@
39
41
  #include "absl/strings/str_cat.h"
40
42
  #include "absl/strings/str_format.h"
41
43
  #include "absl/strings/string_view.h"
42
- #include "absl/types/optional.h"
44
+ #include "absl/types/source_location.h"
43
45
 
44
46
  namespace {
45
47
  using ::absl::log_internal::AsString;
@@ -290,6 +292,21 @@ TYPED_TEST(SignedIntLogFormatTest, BitfieldNegative) {
290
292
  LOG(INFO) << value.bits;
291
293
  }
292
294
 
295
+ TEST(SourceLocationTest, Format) {
296
+ absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
297
+ EXPECT_CALL(test_sink, Send).Times(0);
298
+
299
+ absl::SourceLocation loc = absl::SourceLocation::current();
300
+ std::string expected = absl::StrCat(__FILE__, ":", __LINE__ - 1);
301
+
302
+ EXPECT_CALL(test_sink, Send(AllOf(TextMessage(Eq(expected)),
303
+ ENCODED_MESSAGE(HasValues(ElementsAre(
304
+ ValueWithStr(Eq(expected))))))));
305
+
306
+ test_sink.StartCapturingLogs();
307
+ LOG(INFO) << loc;
308
+ }
309
+
293
310
  // Ignore these test cases on GCC due to "is too small to hold all values ..."
294
311
  // warning.
295
312
  #if !defined(__GNUC__) || defined(__clang__)
@@ -2096,7 +2113,7 @@ size_t MaxLogFieldLengthNoPrefix() {
2096
2113
  }
2097
2114
 
2098
2115
  private:
2099
- absl::optional<size_t> size_;
2116
+ std::optional<size_t> size_;
2100
2117
  } extractor_sink;
2101
2118
  LOG(INFO).NoPrefix().ToSinkOnly(&extractor_sink)
2102
2119
  << std::string(2 * absl::log_internal::kLogMessageBufferSize, 'x');
@@ -28,6 +28,7 @@
28
28
  #include "absl/strings/match.h"
29
29
  #include "absl/strings/string_view.h"
30
30
  #include "absl/time/time.h"
31
+ #include "absl/types/source_location.h"
31
32
 
32
33
  namespace {
33
34
  #if GTEST_HAS_DEATH_TEST
@@ -88,6 +89,23 @@ TEST(TailCallsModifiesTest, AtLocationFileLineLifetime) {
88
89
  << "hello world";
89
90
  }
90
91
 
92
+ TEST(TailCallsModifiesTest, AtLocationSourceLocation) {
93
+ absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
94
+ EXPECT_CALL(test_sink, Send).Times(0);
95
+
96
+ const int log_line = __LINE__ + 1;
97
+ constexpr absl::SourceLocation loc = absl::SourceLocation::current();
98
+ auto do_log = [loc] { LOG(INFO).AtLocation(loc) << "hello world"; };
99
+
100
+ EXPECT_CALL(test_sink,
101
+ Send(AllOf(SourceFilename(Eq(__FILE__)),
102
+ SourceBasename(Eq("log_modifier_methods_test.cc")),
103
+ SourceLine(Eq(log_line)))));
104
+
105
+ test_sink.StartCapturingLogs();
106
+ do_log();
107
+ }
108
+
91
109
  TEST(TailCallsModifiesTest, NoPrefix) {
92
110
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
93
111
  EXPECT_CALL(test_sink, Send).Times(0);
@@ -24,6 +24,7 @@
24
24
 
25
25
  #include <ios>
26
26
  #include <memory>
27
+ #include <optional>
27
28
  #include <ostream>
28
29
  #include <string>
29
30
  #include <utility>
@@ -34,6 +35,7 @@
34
35
  #include "absl/strings/internal/ostringstream.h"
35
36
  #include "absl/strings/string_view.h"
36
37
  #include "absl/types/optional.h"
38
+ #include "absl/types/source_location.h"
37
39
  #include "absl/utility/utility.h"
38
40
 
39
41
  namespace absl {
@@ -82,10 +84,14 @@ class LogStreamer final {
82
84
  : severity_(severity),
83
85
  line_(line),
84
86
  file_(file),
85
- stream_(absl::in_place, &buf_) {
87
+ stream_(std::in_place, &buf_) {
86
88
  // To match `LOG`'s defaults:
87
89
  stream_->setf(std::ios_base::showbase | std::ios_base::boolalpha);
88
90
  }
91
+ explicit LogStreamer(
92
+ absl::LogSeverity severity,
93
+ absl::SourceLocation loc = absl::SourceLocation::current())
94
+ : LogStreamer(severity, loc.file_name(), static_cast<int>(loc.line())) {}
89
95
 
90
96
  // A moved-from `absl::LogStreamer` does not `LOG` when destroyed,
91
97
  // and a program that streams into one has undefined behavior.
@@ -131,7 +137,7 @@ class LogStreamer final {
131
137
  std::string buf_;
132
138
  // A disengaged `stream_` indicates a moved-from `LogStreamer` that should not
133
139
  // `LOG` upon destruction.
134
- absl::optional<absl::strings_internal::OStringStream> stream_;
140
+ std::optional<absl::strings_internal::OStringStream> stream_;
135
141
  };
136
142
 
137
143
  // LogInfoStreamer()
@@ -175,6 +181,27 @@ inline LogStreamer LogDebugFatalStreamer(absl::string_view file, int line) {
175
181
  return absl::LogStreamer(absl::kLogDebugFatal, file, line);
176
182
  }
177
183
 
184
+ inline LogStreamer LogInfoStreamer(
185
+ absl::SourceLocation loc = absl::SourceLocation::current()) {
186
+ return absl::LogStreamer(absl::LogSeverity::kInfo, loc);
187
+ }
188
+ inline LogStreamer LogWarningStreamer(
189
+ absl::SourceLocation loc = absl::SourceLocation::current()) {
190
+ return absl::LogStreamer(absl::LogSeverity::kWarning, loc);
191
+ }
192
+ inline LogStreamer LogErrorStreamer(
193
+ absl::SourceLocation loc = absl::SourceLocation::current()) {
194
+ return absl::LogStreamer(absl::LogSeverity::kError, loc);
195
+ }
196
+ inline LogStreamer LogFatalStreamer(
197
+ absl::SourceLocation loc = absl::SourceLocation::current()) {
198
+ return absl::LogStreamer(absl::LogSeverity::kFatal, loc);
199
+ }
200
+ inline LogStreamer LogDebugFatalStreamer(
201
+ absl::SourceLocation loc = absl::SourceLocation::current()) {
202
+ return absl::LogStreamer(absl::kLogDebugFatal, loc);
203
+ }
204
+
178
205
  ABSL_NAMESPACE_END
179
206
  } // namespace absl
180
207
 
@@ -30,6 +30,7 @@
30
30
  #include "absl/log/log.h"
31
31
  #include "absl/log/scoped_mock_log.h"
32
32
  #include "absl/strings/string_view.h"
33
+ #include "absl/types/source_location.h"
33
34
 
34
35
  namespace {
35
36
  using ::absl::log_internal::DeathTestExpectedLogging;
@@ -448,4 +449,21 @@ TEST(LogStreamerTest, CorrectDefaultFlags) {
448
449
  LOG(INFO) << false << std::hex << 0xdeadbeef;
449
450
  }
450
451
 
452
+ TEST(LogStreamerTest, AtSourceLocation) {
453
+ const int log_line = __LINE__ + 2;
454
+ auto do_log = [] {
455
+ WriteToStream("foo", &absl::LogInfoStreamer().stream()); //
456
+ };
457
+ absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
458
+ EXPECT_CALL(test_sink, Send).Times(0);
459
+
460
+ EXPECT_CALL(test_sink,
461
+ Send(AllOf(SourceFilename(
462
+ Eq(absl::SourceLocation::current().file_name())),
463
+ SourceLine(Eq(log_line)))));
464
+
465
+ test_sink.StartCapturingLogs();
466
+ do_log();
467
+ }
468
+
451
469
  } // namespace
@@ -261,7 +261,7 @@ TEST(ScopedMockLogTest, NoSequenceWithMultipleThreads) {
261
261
 
262
262
  TEST(ScopedMockLogTsanTest,
263
263
  ScopedMockLogCanBeDeletedWhenAnotherThreadIsLogging) {
264
- auto log = absl::make_unique<absl::ScopedMockLog>();
264
+ auto log = std::make_unique<absl::ScopedMockLog>();
265
265
  EXPECT_CALL(*log, Log(absl::LogSeverity::kInfo, __FILE__, "Thread log"))
266
266
  .Times(AnyNumber());
267
267
 
@@ -60,8 +60,6 @@
60
60
 
61
61
  #include "absl/log/absl_vlog_is_on.h" // IWYU pragma: export
62
62
 
63
- // IWYU pragma: private, include "absl/log/log.h"
64
-
65
63
  // Each VLOG_IS_ON call site gets its own VLogSite that registers with the
66
64
  // global linked list of sites to asynchronously update its verbosity level on
67
65
  // changes to --v or --vmodule. The verbosity can also be set by manually
@@ -14,6 +14,8 @@
14
14
 
15
15
  #include "absl/log/vlog_is_on.h"
16
16
 
17
+ #include <optional>
18
+
17
19
  #include "gmock/gmock.h"
18
20
  #include "gtest/gtest.h"
19
21
  #include "absl/base/log_severity.h"
@@ -22,25 +24,24 @@
22
24
  #include "absl/log/globals.h"
23
25
  #include "absl/log/log.h"
24
26
  #include "absl/log/scoped_mock_log.h"
25
- #include "absl/types/optional.h"
26
27
 
27
28
  namespace {
28
29
 
29
30
  using ::testing::_;
30
31
 
31
- absl::optional<int> MaxLogVerbosity() {
32
+ std::optional<int> MaxLogVerbosity() {
32
33
  #ifdef ABSL_MAX_VLOG_VERBOSITY
33
34
  return ABSL_MAX_VLOG_VERBOSITY;
34
35
  #else
35
- return absl::nullopt;
36
+ return std::nullopt;
36
37
  #endif
37
38
  }
38
39
 
39
- absl::optional<int> MinLogLevel() {
40
+ std::optional<int> MinLogLevel() {
40
41
  #ifdef ABSL_MIN_LOG_LEVEL
41
42
  return static_cast<int>(ABSL_MIN_LOG_LEVEL);
42
43
  #else
43
- return absl::nullopt;
44
+ return std::nullopt;
44
45
  #endif
45
46
  }
46
47
 
@@ -58,7 +58,7 @@ ABSL_NAMESPACE_BEGIN
58
58
  // std::unique_ptr<X> x(NewX(1, 2));
59
59
  //
60
60
  // While `absl::WrapUnique` is useful for capturing the output of a raw
61
- // pointer factory, prefer 'absl::make_unique<T>(args...)' over
61
+ // pointer factory, prefer 'std::make_unique<T>(args...)' over
62
62
  // 'absl::WrapUnique(new T(args...))'.
63
63
  //
64
64
  // auto x = WrapUnique(new X(1, 2)); // works, but nonideal.
@@ -96,6 +96,53 @@ std::unique_ptr<T> WrapUnique(T* ptr) {
96
96
  // should use `std::make_unique`.
97
97
  using std::make_unique;
98
98
 
99
+ namespace memory_internal {
100
+
101
+ // Traits to select proper overload and return type for
102
+ // `absl::make_unique_for_overwrite<>`.
103
+ template <typename T>
104
+ struct MakeUniqueResult {
105
+ using scalar = std::unique_ptr<T>;
106
+ };
107
+ template <typename T>
108
+ struct MakeUniqueResult<T[]> {
109
+ using array = std::unique_ptr<T[]>;
110
+ };
111
+ template <typename T, size_t N>
112
+ struct MakeUniqueResult<T[N]> {
113
+ using invalid = void;
114
+ };
115
+
116
+ } // namespace memory_internal
117
+
118
+ // These are make_unique_for_overwrite variants modeled after
119
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1973r1.pdf
120
+ // Unlike std::make_unique, values are default initialized rather than value
121
+ // initialized.
122
+ //
123
+ // `absl::make_unique_for_overwrite` overload for non-array types.
124
+ template <typename T>
125
+ typename memory_internal::MakeUniqueResult<T>::scalar
126
+ make_unique_for_overwrite() {
127
+ return std::unique_ptr<T>(new T);
128
+ }
129
+
130
+ // `absl::make_unique_for_overwrite` overload for an array T[] of unknown
131
+ // bounds. The array allocation needs to use the `new T[size]` form and cannot
132
+ // take element constructor arguments. The `std::unique_ptr` will manage
133
+ // destructing these array elements.
134
+ template <typename T>
135
+ typename memory_internal::MakeUniqueResult<T>::array make_unique_for_overwrite(
136
+ size_t n) {
137
+ return std::unique_ptr<T>(new typename std::remove_extent_t<T>[n]);
138
+ }
139
+
140
+ // `absl::make_unique_for_overwrite` overload for an array T[N] of known bounds.
141
+ // This construction will be rejected.
142
+ template <typename T, typename... Args>
143
+ typename memory_internal::MakeUniqueResult<T>::invalid
144
+ make_unique_for_overwrite(Args&&... /* args */) = delete;
145
+
99
146
  // -----------------------------------------------------------------------------
100
147
  // Function Template: RawPtr()
101
148
  // -----------------------------------------------------------------------------
@@ -120,7 +167,7 @@ inline std::nullptr_t RawPtr(std::nullptr_t) { return nullptr; }
120
167
  //
121
168
  // Example:
122
169
  //
123
- // auto up = absl::make_unique<int>(10);
170
+ // auto up = std::make_unique<int>(10);
124
171
  // auto sp = absl::ShareUniquePtr(std::move(up)); // shared_ptr<int>
125
172
  // CHECK_EQ(*sp, 10);
126
173
  // CHECK(up == nullptr);
@@ -166,7 +213,8 @@ std::weak_ptr<T> WeakenPtr(const std::shared_ptr<T>& ptr) {
166
213
  // `std::pointer_traits` for platforms that had not yet provided it. Those
167
214
  // platforms are no longer supported. New code should simply use
168
215
  // `std::pointer_traits`.
169
- using std::pointer_traits;
216
+ template <typename Ptr>
217
+ using pointer_traits ABSL_DEPRECATE_AND_INLINE() = std::pointer_traits<Ptr>;
170
218
 
171
219
  // -----------------------------------------------------------------------------
172
220
  // Class Template: allocator_traits
@@ -176,7 +224,9 @@ using std::pointer_traits;
176
224
  // `std::allocator_traits` for platforms that had not yet provided it. Those
177
225
  // platforms are no longer supported. New code should simply use
178
226
  // `std::allocator_traits`.
179
- using std::allocator_traits;
227
+ template <typename Alloc>
228
+ using allocator_traits ABSL_DEPRECATE_AND_INLINE() =
229
+ std::allocator_traits<Alloc>;
180
230
 
181
231
  namespace memory_internal {
182
232
 
@@ -188,7 +238,7 @@ struct ExtractOr {
188
238
  };
189
239
 
190
240
  template <template <typename> class Extract, typename Obj, typename Default>
191
- struct ExtractOr<Extract, Obj, Default, void_t<Extract<Obj>>> {
241
+ struct ExtractOr<Extract, Obj, Default, std::void_t<Extract<Obj>>> {
192
242
  using type = Extract<Obj>;
193
243
  };
194
244
 
@@ -64,6 +64,23 @@ TEST(WrapUniqueTest, WrapUnique) {
64
64
  EXPECT_EQ(0, DestructorVerifier::instance_count());
65
65
  }
66
66
 
67
+ TEST(MakeUniqueForOverwriteTest, Basic) {
68
+ std::unique_ptr<int> p = absl::make_unique_for_overwrite<int>();
69
+ p = absl::make_unique_for_overwrite<int>();
70
+ }
71
+
72
+ // The initialization tests needs to suppress dead-store elimination, otherwise
73
+ // memset is optimized away, and lifetime is assumed begin after new, triggering
74
+ // uninitalized variable warnings. Various tricks to prevent memset from being
75
+ // optimized away still result in uninitialized variable warnings. Once we move
76
+ // to a C++20 floor we can delegate to std::make_unique_for_overwrite and avoid
77
+ // testing absl::make_unique_for_overwrite.
78
+ // https://github.com/gcc-mirror/gcc/blob/be1da01067c898a3e3979bfb1edd05f115ab2e3e/libstdc%2B%2B-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc#L1
79
+ #if defined(__GNUC__) && !defined(__clang__)
80
+ #pragma GCC push_options
81
+ #pragma GCC optimize("O0")
82
+ #endif
83
+
67
84
  // InitializationVerifier fills in a pattern when allocated so we can
68
85
  // distinguish between its default and value initialized states (without
69
86
  // accessing truly uninitialized memory).
@@ -87,6 +104,32 @@ struct InitializationVerifier {
87
104
  int b;
88
105
  };
89
106
 
107
+ TEST(Initialization, MakeUniqueForOverwrite) {
108
+ auto p = absl::make_unique_for_overwrite<InitializationVerifier>();
109
+
110
+ int pattern;
111
+ memset(&pattern, InitializationVerifier::kDefaultScalar, sizeof(pattern));
112
+
113
+ EXPECT_EQ(pattern, p->a);
114
+ EXPECT_EQ(pattern, p->b);
115
+ }
116
+
117
+ TEST(Initialization, MakeUniqueForOverwriteArray) {
118
+ auto p = absl::make_unique_for_overwrite<InitializationVerifier[]>(2);
119
+
120
+ int pattern;
121
+ memset(&pattern, InitializationVerifier::kDefaultArray, sizeof(pattern));
122
+
123
+ EXPECT_EQ(pattern, p[0].a);
124
+ EXPECT_EQ(pattern, p[0].b);
125
+ EXPECT_EQ(pattern, p[1].a);
126
+ EXPECT_EQ(pattern, p[1].b);
127
+ }
128
+
129
+ #if defined(__GNUC__) && !defined(__clang__)
130
+ #pragma GCC pop_options
131
+ #endif
132
+
90
133
  struct ArrayWatch {
91
134
  void* operator new[](size_t n) {
92
135
  allocs().push_back(n);
@@ -99,6 +142,17 @@ struct ArrayWatch {
99
142
  }
100
143
  };
101
144
 
145
+ TEST(MakeUniqueForOverwriteTest, Array) {
146
+ // Ensure state is clean before we start so that these tests
147
+ // are order-agnostic.
148
+ ArrayWatch::allocs().clear();
149
+
150
+ auto p = absl::make_unique_for_overwrite<ArrayWatch[]>(5);
151
+ static_assert(std::is_same<decltype(p), std::unique_ptr<ArrayWatch[]>>::value,
152
+ "unexpected return type");
153
+ EXPECT_THAT(ArrayWatch::allocs(), ElementsAre(5 * sizeof(ArrayWatch)));
154
+ }
155
+
102
156
  TEST(RawPtrTest, RawPointer) {
103
157
  int i = 5;
104
158
  EXPECT_EQ(&i, absl::RawPtr(&i));
@@ -157,7 +211,7 @@ TEST(RawPtrTest, Zero) {
157
211
  }
158
212
 
159
213
  TEST(ShareUniquePtrTest, Share) {
160
- auto up = absl::make_unique<int>();
214
+ auto up = std::make_unique<int>();
161
215
  int* rp = up.get();
162
216
  auto sp = absl::ShareUniquePtr(std::move(up));
163
217
  EXPECT_EQ(sp.get(), rp);
@@ -42,6 +42,7 @@ cc_library(
42
42
  linkopts = ABSL_DEFAULT_LINKOPTS,
43
43
  visibility = [
44
44
  "//absl:__subpackages__",
45
+ "//absl:friends",
45
46
  ],
46
47
  deps = [
47
48
  "//absl/base:config",
@@ -67,6 +68,7 @@ cc_library(
67
68
  linkopts = ABSL_DEFAULT_LINKOPTS,
68
69
  visibility = [
69
70
  "//absl:__subpackages__",
71
+ "//absl:friends",
70
72
  ],
71
73
  deps = [
72
74
  "//absl/base:config",
@@ -52,7 +52,7 @@ namespace meta_internal {
52
52
  // code like the following is _not_ valid in C++17:
53
53
  //
54
54
  // template <typename T,
55
- // typename = std::enable_if_t<gtl::Requires<T>(
55
+ // typename = std::enable_if_t<Requires<T>(
56
56
  // [] (auto&& v) -> decltype(<expr>) {})>>
57
57
  //
58
58
  template <typename... T, typename F>