re2 1.22.2 → 1.23.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 (495) hide show
  1. package/README.md +60 -4
  2. package/binding.gyp +5 -1
  3. package/lib/addon.cc +4 -0
  4. package/lib/new.cc +1 -246
  5. package/lib/pattern.cc +252 -0
  6. package/lib/pattern.h +10 -0
  7. package/lib/set.cc +777 -0
  8. package/lib/wrapped_re2_set.h +42 -0
  9. package/package.json +21 -9
  10. package/re2.d.ts +46 -9
  11. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +14 -24
  12. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +3 -3
  13. package/vendor/abseil-cpp/CMake/README.md +2 -2
  14. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  15. package/vendor/abseil-cpp/MODULE.bazel +6 -9
  16. package/vendor/abseil-cpp/README.md +6 -8
  17. package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +6 -4
  18. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +3 -0
  19. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +1 -0
  20. package/vendor/abseil-cpp/absl/algorithm/container.h +2 -19
  21. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +4 -11
  22. package/vendor/abseil-cpp/absl/base/BUILD.bazel +60 -45
  23. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +57 -38
  24. package/vendor/abseil-cpp/absl/base/attributes.h +76 -7
  25. package/vendor/abseil-cpp/absl/base/attributes_test.cc +43 -0
  26. package/vendor/abseil-cpp/absl/base/call_once.h +11 -12
  27. package/vendor/abseil-cpp/absl/base/config.h +22 -129
  28. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +0 -4
  29. package/vendor/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  30. package/vendor/abseil-cpp/absl/base/{internal/fast_type_id_test.cc → fast_type_id_test.cc} +34 -30
  31. package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  32. package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  33. package/vendor/abseil-cpp/absl/base/internal/endian.h +34 -38
  34. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  35. package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test.cc +85 -0
  36. package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
  37. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -9
  38. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  39. package/vendor/abseil-cpp/absl/base/internal/poison.cc +7 -6
  40. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +15 -28
  41. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +65 -35
  42. package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +2 -2
  43. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +2 -2
  44. package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +1 -1
  45. package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +4 -4
  46. package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  47. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +4 -0
  48. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  49. package/vendor/abseil-cpp/absl/base/no_destructor.h +11 -32
  50. package/vendor/abseil-cpp/absl/base/no_destructor_test.cc +0 -4
  51. package/vendor/abseil-cpp/absl/base/nullability.h +83 -72
  52. package/vendor/abseil-cpp/absl/base/nullability_test.cc +25 -64
  53. package/vendor/abseil-cpp/absl/base/options.h +3 -80
  54. package/vendor/abseil-cpp/absl/base/policy_checks.h +7 -7
  55. package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +15 -0
  56. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +50 -30
  57. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -1
  58. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +0 -1
  59. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  60. package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +0 -2
  61. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  62. package/vendor/abseil-cpp/absl/container/BUILD.bazel +74 -1
  63. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +73 -0
  64. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +51 -9
  65. package/vendor/abseil-cpp/absl/container/btree_map.h +8 -6
  66. package/vendor/abseil-cpp/absl/container/btree_set.h +8 -6
  67. package/vendor/abseil-cpp/absl/container/btree_test.cc +89 -4
  68. package/vendor/abseil-cpp/absl/container/fixed_array.h +7 -15
  69. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +17 -0
  70. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +20 -15
  71. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +8 -14
  72. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +19 -14
  73. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +46 -0
  74. package/vendor/abseil-cpp/absl/container/inlined_vector.h +7 -6
  75. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +28 -0
  76. package/vendor/abseil-cpp/absl/container/internal/btree.h +132 -29
  77. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  78. package/vendor/abseil-cpp/absl/container/internal/common.h +43 -0
  79. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  80. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +28 -24
  81. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +4 -17
  82. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +80 -17
  83. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +32 -2
  84. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +13 -8
  85. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +1 -52
  86. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +9 -31
  87. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +23 -32
  88. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +5 -1
  89. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +11 -23
  90. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +14 -9
  91. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +516 -0
  92. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc +259 -0
  93. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -6
  94. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +32 -13
  95. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +8 -8
  96. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  97. package/vendor/abseil-cpp/absl/container/internal/layout.h +26 -42
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  99. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +1506 -213
  100. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +1095 -1658
  101. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +3 -2
  102. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +31 -29
  103. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +51 -20
  104. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
  105. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl_test.cc +66 -0
  106. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +707 -363
  107. package/vendor/abseil-cpp/absl/container/node_hash_map.h +20 -15
  108. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +0 -3
  109. package/vendor/abseil-cpp/absl/container/node_hash_set.h +18 -13
  110. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +3 -8
  111. package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +1 -1
  112. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +9 -20
  113. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +9 -20
  114. package/vendor/abseil-cpp/absl/copts/copts.py +24 -15
  115. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +3 -0
  116. package/vendor/abseil-cpp/absl/crc/crc32c.cc +0 -4
  117. package/vendor/abseil-cpp/absl/crc/crc32c.h +7 -5
  118. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +17 -4
  119. package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +30 -0
  120. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +17 -0
  121. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  122. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  123. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  124. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +136 -165
  125. package/vendor/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py +90 -0
  126. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +7 -0
  127. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +4 -0
  128. package/vendor/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  129. package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  130. package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  131. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  132. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  133. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +11 -10
  134. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  135. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  136. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  137. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  138. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  139. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  140. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  141. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  142. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  143. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -14
  144. package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  145. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +161 -27
  146. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  147. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +435 -1
  148. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +55 -63
  149. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  150. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  151. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -0
  152. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +3 -0
  153. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  154. package/vendor/abseil-cpp/absl/flags/flag.h +4 -3
  155. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  156. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +14 -13
  157. package/vendor/abseil-cpp/absl/flags/internal/flag.h +34 -34
  158. package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  159. package/vendor/abseil-cpp/absl/flags/internal/registry.h +4 -3
  160. package/vendor/abseil-cpp/absl/flags/internal/usage.cc +2 -2
  161. package/vendor/abseil-cpp/absl/flags/parse.cc +10 -6
  162. package/vendor/abseil-cpp/absl/flags/reflection.cc +9 -7
  163. package/vendor/abseil-cpp/absl/flags/usage.cc +2 -2
  164. package/vendor/abseil-cpp/absl/flags/usage_config.cc +2 -2
  165. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +7 -6
  166. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +2 -4
  167. package/vendor/abseil-cpp/absl/functional/any_invocable.h +15 -15
  168. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +10 -42
  169. package/vendor/abseil-cpp/absl/functional/function_ref.h +2 -9
  170. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +10 -0
  171. package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +1 -1
  172. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +112 -227
  173. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  174. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  175. package/vendor/abseil-cpp/absl/functional/overload.h +0 -20
  176. package/vendor/abseil-cpp/absl/functional/overload_test.cc +1 -7
  177. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +16 -9
  178. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +6 -9
  179. package/vendor/abseil-cpp/absl/hash/hash.h +18 -0
  180. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +3 -0
  181. package/vendor/abseil-cpp/absl/hash/hash_instantiated_test.cc +1 -1
  182. package/vendor/abseil-cpp/absl/hash/hash_test.cc +131 -30
  183. package/vendor/abseil-cpp/absl/hash/hash_testing.h +20 -20
  184. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +129 -17
  185. package/vendor/abseil-cpp/absl/hash/internal/hash.h +326 -362
  186. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +54 -151
  187. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +14 -2
  188. package/vendor/abseil-cpp/absl/{strings/cord_buffer.cc → hash/internal/weakly_mixed_integer.h} +14 -6
  189. package/vendor/abseil-cpp/absl/log/BUILD.bazel +4 -0
  190. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +7 -0
  191. package/vendor/abseil-cpp/absl/log/check.h +2 -1
  192. package/vendor/abseil-cpp/absl/log/check_test_impl.inc +308 -14
  193. package/vendor/abseil-cpp/absl/log/die_if_null.h +2 -2
  194. package/vendor/abseil-cpp/absl/log/flags_test.cc +7 -0
  195. package/vendor/abseil-cpp/absl/log/globals.h +4 -5
  196. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +13 -9
  197. package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  198. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +24 -22
  199. package/vendor/abseil-cpp/absl/log/internal/check_op.h +149 -94
  200. package/vendor/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  201. package/vendor/abseil-cpp/absl/log/internal/conditions.h +7 -2
  202. package/vendor/abseil-cpp/absl/log/internal/fnmatch_test.cc +1 -0
  203. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  204. package/vendor/abseil-cpp/absl/log/internal/log_message.h +84 -59
  205. package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  206. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  207. package/vendor/abseil-cpp/absl/log/internal/proto.cc +3 -2
  208. package/vendor/abseil-cpp/absl/log/internal/proto.h +3 -3
  209. package/vendor/abseil-cpp/absl/log/internal/strip.h +4 -12
  210. package/vendor/abseil-cpp/absl/log/internal/structured.h +3 -7
  211. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +9 -9
  212. package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  213. package/vendor/abseil-cpp/absl/log/internal/voidify.h +10 -4
  214. package/vendor/abseil-cpp/absl/log/log.h +48 -35
  215. package/vendor/abseil-cpp/absl/log/log_basic_test_impl.inc +45 -0
  216. package/vendor/abseil-cpp/absl/log/log_entry.cc +241 -19
  217. package/vendor/abseil-cpp/absl/log/log_entry.h +2 -0
  218. package/vendor/abseil-cpp/absl/log/log_format_test.cc +412 -6
  219. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +20 -0
  220. package/vendor/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  221. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +15 -2
  222. package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +7 -1
  223. package/vendor/abseil-cpp/absl/log/structured_test.cc +1 -0
  224. package/vendor/abseil-cpp/absl/memory/BUILD.bazel +2 -0
  225. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  226. package/vendor/abseil-cpp/absl/meta/type_traits.h +46 -175
  227. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1 -478
  228. package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +7 -3
  229. package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +2 -0
  230. package/vendor/abseil-cpp/absl/numeric/bits.h +68 -2
  231. package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +1 -1
  232. package/vendor/abseil-cpp/absl/numeric/bits_test.cc +83 -0
  233. package/vendor/abseil-cpp/absl/numeric/int128.cc +0 -52
  234. package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +14 -15
  235. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +13 -8
  236. package/vendor/abseil-cpp/absl/numeric/internal/bits.h +39 -7
  237. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +47 -0
  238. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +38 -0
  239. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +124 -0
  240. package/vendor/abseil-cpp/absl/profiling/hashtable.h +40 -0
  241. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  242. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +462 -0
  243. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +138 -0
  244. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  245. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +7 -3
  246. package/vendor/abseil-cpp/absl/random/BUILD.bazel +6 -4
  247. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +20 -19
  248. package/vendor/abseil-cpp/absl/random/benchmarks.cc +16 -23
  249. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  250. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +7 -2
  251. package/vendor/abseil-cpp/absl/random/distributions.h +6 -8
  252. package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  253. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +19 -20
  254. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  255. package/vendor/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +24 -92
  256. package/vendor/abseil-cpp/absl/{base/inline_variable_test_b.cc → random/internal/entropy_pool.h} +14 -6
  257. package/vendor/abseil-cpp/absl/random/internal/entropy_pool_test.cc +119 -0
  258. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +6 -7
  259. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  260. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +39 -0
  261. package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +8 -6
  262. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  263. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  264. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  265. package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +3 -0
  266. package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +5 -4
  267. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +8 -10
  268. package/vendor/abseil-cpp/absl/random/random.h +88 -53
  269. package/vendor/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  270. package/vendor/abseil-cpp/absl/status/BUILD.bazel +26 -0
  271. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  272. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  273. package/vendor/abseil-cpp/absl/status/internal/status_matchers.cc +4 -3
  274. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +194 -32
  275. package/vendor/abseil-cpp/absl/status/status.cc +4 -8
  276. package/vendor/abseil-cpp/absl/status/status.h +8 -8
  277. package/vendor/abseil-cpp/absl/{base/inline_variable_test_a.cc → status/status_benchmark.cc} +20 -10
  278. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +65 -0
  279. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  280. package/vendor/abseil-cpp/absl/status/statusor.cc +2 -2
  281. package/vendor/abseil-cpp/absl/status/statusor.h +49 -102
  282. package/vendor/abseil-cpp/absl/status/statusor_benchmark.cc +480 -0
  283. package/vendor/abseil-cpp/absl/status/statusor_test.cc +323 -1
  284. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +70 -34
  285. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +6 -3
  286. package/vendor/abseil-cpp/absl/strings/ascii.cc +9 -9
  287. package/vendor/abseil-cpp/absl/strings/ascii.h +18 -18
  288. package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +5 -8
  289. package/vendor/abseil-cpp/absl/strings/charconv.cc +21 -22
  290. package/vendor/abseil-cpp/absl/strings/charconv.h +5 -5
  291. package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +1 -2
  292. package/vendor/abseil-cpp/absl/strings/charset_benchmark.cc +1 -1
  293. package/vendor/abseil-cpp/absl/strings/cord.cc +54 -58
  294. package/vendor/abseil-cpp/absl/strings/cord.h +94 -84
  295. package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  296. package/vendor/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  297. package/vendor/abseil-cpp/absl/strings/cord_test.cc +23 -0
  298. package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +4 -5
  299. package/vendor/abseil-cpp/absl/strings/escaping.cc +130 -149
  300. package/vendor/abseil-cpp/absl/strings/escaping.h +9 -10
  301. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +2 -3
  302. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +19 -9
  303. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  304. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +1 -1
  305. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +6 -10
  306. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  307. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  308. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +5 -9
  309. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +2 -4
  310. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc +56 -0
  311. package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +2 -3
  312. package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +1 -2
  313. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  314. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  315. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1 -6
  316. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  317. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +3 -2
  318. package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  319. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  320. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  321. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +7 -2
  322. package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  323. package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  324. package/vendor/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  325. package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +196 -3
  326. package/vendor/abseil-cpp/absl/strings/numbers.cc +53 -32
  327. package/vendor/abseil-cpp/absl/strings/numbers.h +87 -58
  328. package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +1 -1
  329. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +634 -120
  330. package/vendor/abseil-cpp/absl/strings/str_cat.cc +6 -7
  331. package/vendor/abseil-cpp/absl/strings/str_cat.h +32 -32
  332. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +25 -1
  333. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +2 -7
  334. package/vendor/abseil-cpp/absl/strings/str_format.h +18 -18
  335. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +8 -14
  336. package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +2 -3
  337. package/vendor/abseil-cpp/absl/strings/str_replace.cc +3 -3
  338. package/vendor/abseil-cpp/absl/strings/str_replace.h +6 -6
  339. package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +2 -3
  340. package/vendor/abseil-cpp/absl/strings/str_split.h +2 -2
  341. package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +2 -3
  342. package/vendor/abseil-cpp/absl/strings/string_view.cc +4 -9
  343. package/vendor/abseil-cpp/absl/strings/string_view.h +38 -39
  344. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +4 -6
  345. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +2 -50
  346. package/vendor/abseil-cpp/absl/strings/strip.h +4 -4
  347. package/vendor/abseil-cpp/absl/strings/substitute.cc +5 -4
  348. package/vendor/abseil-cpp/absl/strings/substitute.h +66 -64
  349. package/vendor/abseil-cpp/absl/strings/substitute_benchmark.cc +158 -0
  350. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +6 -1
  351. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +2 -1
  352. package/vendor/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  353. package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +3 -3
  354. package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  355. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  356. package/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  357. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  358. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +2 -3
  359. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +6 -5
  360. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  361. package/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  362. package/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  363. package/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  364. package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +3 -3
  365. package/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  366. package/vendor/abseil-cpp/absl/synchronization/internal/waiter_test.cc +12 -3
  367. package/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  368. package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +4 -4
  369. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +27 -29
  370. package/vendor/abseil-cpp/absl/synchronization/mutex.h +205 -126
  371. package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +13 -31
  372. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +183 -169
  373. package/vendor/abseil-cpp/absl/synchronization/notification.cc +5 -5
  374. package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
  375. package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +3 -3
  376. package/vendor/abseil-cpp/absl/time/BUILD.bazel +9 -1
  377. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +3 -1
  378. package/vendor/abseil-cpp/absl/time/civil_time.cc +1 -0
  379. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +134 -0
  380. package/vendor/abseil-cpp/absl/time/clock.cc +11 -14
  381. package/vendor/abseil-cpp/absl/time/duration.cc +14 -9
  382. package/vendor/abseil-cpp/absl/time/duration_test.cc +6 -7
  383. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +14 -3
  384. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  385. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  386. package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +4 -490
  387. package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc +515 -0
  388. package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
  389. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +41 -4
  390. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +22 -23
  391. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  392. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1 -488
  393. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  394. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coyhaique +0 -0
  395. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
  396. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
  397. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +2 -1
  398. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +1 -1
  399. package/vendor/abseil-cpp/absl/time/time.h +24 -18
  400. package/vendor/abseil-cpp/absl/time/time_test.cc +26 -0
  401. package/vendor/abseil-cpp/absl/types/BUILD.bazel +11 -164
  402. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +23 -167
  403. package/vendor/abseil-cpp/absl/types/any.h +9 -484
  404. package/vendor/abseil-cpp/absl/types/optional.h +7 -747
  405. package/vendor/abseil-cpp/absl/types/span.h +46 -19
  406. package/vendor/abseil-cpp/absl/types/span_test.cc +27 -0
  407. package/vendor/abseil-cpp/absl/types/variant.h +5 -784
  408. package/vendor/abseil-cpp/absl/types/variant_test.cc +43 -2597
  409. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -41
  410. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +0 -40
  411. package/vendor/abseil-cpp/absl/utility/utility.h +10 -185
  412. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -3
  413. package/vendor/abseil-cpp/ci/cmake_common.sh +2 -2
  414. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +12 -13
  415. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +24 -21
  416. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +12 -12
  417. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +23 -22
  418. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +20 -19
  419. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  420. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +17 -17
  421. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +10 -10
  422. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +1 -1
  423. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +1 -1
  424. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +9 -10
  425. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +9 -1
  426. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +14 -6
  427. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +14 -6
  428. package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +1 -1
  429. package/vendor/re2/.bazelrc +4 -4
  430. package/vendor/re2/.bcr/metadata.template.json +16 -0
  431. package/vendor/re2/.bcr/presubmit.yml +57 -0
  432. package/vendor/re2/.bcr/source.template.json +5 -0
  433. package/vendor/re2/.github/bazel.sh +1 -7
  434. package/vendor/re2/.github/workflows/ci-bazel.yml +5 -5
  435. package/vendor/re2/.github/workflows/ci-cmake.yml +4 -4
  436. package/vendor/re2/.github/workflows/ci.yml +5 -6
  437. package/vendor/re2/.github/workflows/pages.yml +3 -3
  438. package/vendor/re2/.github/workflows/python.yml +29 -24
  439. package/vendor/re2/.github/workflows/release-bazel.yml +42 -0
  440. package/vendor/re2/.github/workflows/release.yml +15 -4
  441. package/vendor/re2/BUILD.bazel +25 -0
  442. package/vendor/re2/CMakeLists.txt +100 -85
  443. package/vendor/re2/CONTRIBUTING.md +0 -1
  444. package/vendor/re2/MODULE.bazel +10 -10
  445. package/vendor/re2/Makefile +1 -1
  446. package/vendor/re2/README.md +259 -0
  447. package/vendor/re2/python/BUILD.bazel +8 -0
  448. package/vendor/re2/python/re2.py +1 -1
  449. package/vendor/re2/python/re2_test.py +6 -0
  450. package/vendor/re2/python/setup.py +3 -3
  451. package/vendor/re2/re2/bitmap256.cc +3 -4
  452. package/vendor/re2/re2/bitstate.cc +15 -10
  453. package/vendor/re2/re2/dfa.cc +1 -2
  454. package/vendor/re2/re2/parse.cc +3 -4
  455. package/vendor/re2/re2/prog.cc +1 -2
  456. package/vendor/re2/re2/prog.h +1 -0
  457. package/vendor/re2/re2/re2.cc +5 -0
  458. package/vendor/re2/re2/re2.h +9 -9
  459. package/vendor/re2/re2/set.cc +6 -0
  460. package/vendor/re2/re2/set.h +5 -0
  461. package/vendor/re2/re2/testing/re2_arg_test.cc +3 -3
  462. package/vendor/re2/re2/testing/re2_test.cc +8 -0
  463. package/vendor/re2/re2/testing/set_test.cc +5 -0
  464. package/vendor/re2/re2/walker-inl.h +1 -1
  465. package/vendor/abseil-cpp/WORKSPACE +0 -76
  466. package/vendor/abseil-cpp/WORKSPACE.bzlmod +0 -19
  467. package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +0 -64
  468. package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  469. package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +0 -46
  470. package/vendor/abseil-cpp/absl/base/internal/invoke.h +0 -241
  471. package/vendor/abseil-cpp/absl/base/internal/nullability_impl.h +0 -69
  472. package/vendor/abseil-cpp/absl/base/invoke_test.cc +0 -331
  473. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -148
  474. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -54
  475. package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  476. package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +0 -182
  477. package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +0 -173
  478. package/vendor/abseil-cpp/absl/types/any_test.cc +0 -778
  479. package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +0 -64
  480. package/vendor/abseil-cpp/absl/types/bad_any_cast.h +0 -75
  481. package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  482. package/vendor/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  483. package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  484. package/vendor/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  485. package/vendor/abseil-cpp/absl/types/internal/optional.h +0 -352
  486. package/vendor/abseil-cpp/absl/types/internal/variant.h +0 -1622
  487. package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +0 -292
  488. package/vendor/abseil-cpp/absl/types/optional_test.cc +0 -1615
  489. package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +0 -222
  490. package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +0 -532
  491. package/vendor/abseil-cpp/absl/utility/internal/if_constexpr.h +0 -70
  492. package/vendor/abseil-cpp/absl/utility/internal/if_constexpr_test.cc +0 -79
  493. package/vendor/abseil-cpp/absl/utility/utility_test.cc +0 -239
  494. package/vendor/re2/.github/workflows/pr.yml +0 -34
  495. package/vendor/re2/README +0 -47
@@ -13,6 +13,8 @@
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
 
16
+ // SKIP_ABSL_INLINE_NAMESPACE_CHECK
17
+
16
18
  #ifndef ABSL_LOG_CHECK_TEST_IMPL_H_
17
19
  #define ABSL_LOG_CHECK_TEST_IMPL_H_
18
20
 
@@ -22,6 +24,8 @@
22
24
  #error ABSL_TEST_CHECK must be defined for these tests to work.
23
25
  #endif
24
26
 
27
+ #include <cstdint>
28
+ #include <limits>
25
29
  #include <ostream>
26
30
  #include <string>
27
31
 
@@ -39,6 +43,8 @@
39
43
  namespace absl_log_internal {
40
44
 
41
45
  using ::testing::AllOf;
46
+ using ::testing::AnyOf;
47
+ using ::testing::ContainsRegex;
42
48
  using ::testing::HasSubstr;
43
49
  using ::testing::Not;
44
50
 
@@ -64,7 +70,6 @@ TEST(CHECKTest, TestLogicExpressions) {
64
70
  ABSL_TEST_CHECK(i < 0 || i > 3);
65
71
  }
66
72
 
67
- #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
68
73
  ABSL_CONST_INIT const auto global_var_check = [](int i) {
69
74
  ABSL_TEST_CHECK(i > 0); // NOLINT
70
75
  return i + 1;
@@ -74,7 +79,6 @@ ABSL_CONST_INIT const auto global_var = [](int i) {
74
79
  ABSL_TEST_CHECK_GE(i, 0); // NOLINT
75
80
  return i + 1;
76
81
  }(global_var_check);
77
- #endif // ABSL_INTERNAL_CPLUSPLUS_LANG
78
82
 
79
83
  TEST(CHECKTest, TestPlacementsInCompoundStatements) {
80
84
  // check placement inside if/else clauses
@@ -89,13 +93,11 @@ TEST(CHECKTest, TestPlacementsInCompoundStatements) {
89
93
  case 0:
90
94
  ABSL_TEST_CHECK(true); // NOLINT
91
95
 
92
- #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
93
96
  constexpr auto var = [](int i) {
94
97
  ABSL_TEST_CHECK(i > 0); // NOLINT
95
98
  return i + 1;
96
99
  }(global_var);
97
100
  (void)var;
98
- #endif // ABSL_INTERNAL_CPLUSPLUS_LANG
99
101
  }
100
102
 
101
103
  TEST(CHECKTest, TestBoolConvertible) {
@@ -241,6 +243,18 @@ TEST(CHECKTest, TestBinaryChecksWithPrimitives) {
241
243
  ABSL_TEST_CHECK_LT(1, 2);
242
244
  }
243
245
 
246
+ TEST(CHECKTest, TestBinaryChecksWithStringComparison) {
247
+ const std::string a = "a";
248
+ ABSL_TEST_CHECK_EQ(a, "a");
249
+ ABSL_TEST_CHECK_NE(a, "b");
250
+ ABSL_TEST_CHECK_GE(a, a);
251
+ ABSL_TEST_CHECK_GE("b", a);
252
+ ABSL_TEST_CHECK_LE(a, "a");
253
+ ABSL_TEST_CHECK_LE(a, "b");
254
+ ABSL_TEST_CHECK_GT("b", a);
255
+ ABSL_TEST_CHECK_LT(a, "b");
256
+ }
257
+
244
258
  // For testing using CHECK*() on anonymous enums.
245
259
  enum { CASE_A, CASE_B };
246
260
 
@@ -265,6 +279,26 @@ TEST(CHECKTest, TestBinaryChecksWithNullptr) {
265
279
  ABSL_TEST_CHECK_NE(nullptr, p_not_null);
266
280
  }
267
281
 
282
+ struct ExampleTypeThatHasNoStreamOperator {
283
+ bool x;
284
+
285
+ bool operator==(const ExampleTypeThatHasNoStreamOperator& other) const {
286
+ return x == other.x;
287
+ }
288
+ bool operator==(const bool& other) const { return x == other; }
289
+ };
290
+
291
+ TEST(CHECKDeathTest, TestBinaryChecksWithUnprintable) {
292
+ ExampleTypeThatHasNoStreamOperator a{true};
293
+ ExampleTypeThatHasNoStreamOperator b{false};
294
+ ABSL_TEST_CHECK_EQ(a, a);
295
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(a, b),
296
+ "Check failed: a == b \\(UNPRINTABLE vs. UNPRINTABLE\\)");
297
+ ABSL_TEST_CHECK_EQ(a, true);
298
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(a, false),
299
+ "Check failed: a == false \\(UNPRINTABLE vs. 0\\)");
300
+ }
301
+
268
302
  #if GTEST_HAS_DEATH_TEST
269
303
 
270
304
  // Test logging of various char-typed values by failing CHECK*().
@@ -354,7 +388,6 @@ TEST(CHECKTest, TestComparisonPlacementsInCompoundStatements) {
354
388
  case 0:
355
389
  ABSL_TEST_CHECK_STRCASEEQ("A", "a");
356
390
 
357
- #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
358
391
  constexpr auto var = [](int i) {
359
392
  ABSL_TEST_CHECK_GT(i, 0);
360
393
  return i + 1;
@@ -374,7 +407,6 @@ TEST(CHECKTest, TestComparisonPlacementsInCompoundStatements) {
374
407
  int var4 = (({ ABSL_TEST_CHECK_STREQ("a", "a"); }), global_var < 10) ? 1 : 0;
375
408
  (void)var4;
376
409
  #endif // __GNUC__
377
- #endif // ABSL_INTERNAL_CPLUSPLUS_LANG
378
410
  }
379
411
 
380
412
  TEST(CHECKTest, TestDCHECK) {
@@ -441,7 +473,6 @@ TEST(CHECKTest, TestQCHECKPlacementsInCompoundStatements) {
441
473
  case 0:
442
474
  ABSL_TEST_QCHECK(true);
443
475
 
444
- #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
445
476
  constexpr auto var = [](int i) {
446
477
  ABSL_TEST_QCHECK(i > 0); // NOLINT
447
478
  return i + 1;
@@ -452,7 +483,6 @@ TEST(CHECKTest, TestQCHECKPlacementsInCompoundStatements) {
452
483
  int var2 = (({ ABSL_TEST_CHECK_LE(1, 2); }), global_var < 10) ? 1 : 0;
453
484
  (void)var2;
454
485
  #endif // __GNUC__
455
- #endif // ABSL_INTERNAL_CPLUSPLUS_LANG
456
486
  }
457
487
 
458
488
  class ComparableType {
@@ -642,14 +672,11 @@ void AbslStringify(Sink& sink, const PointerIsStringifiable* var) {
642
672
  TEST(CHECKDeathTest, TestPointerPrintedAsNumberDespiteAbslStringify) {
643
673
  const auto* p = reinterpret_cast<const PointerIsStringifiable*>(0x1234);
644
674
 
645
- #ifdef _MSC_VER
646
675
  EXPECT_DEATH(
647
676
  ABSL_TEST_CHECK_EQ(p, nullptr),
648
- HasSubstr("Check failed: p == nullptr (0000000000001234 vs. (null))"));
649
- #else // _MSC_VER
650
- EXPECT_DEATH(ABSL_TEST_CHECK_EQ(p, nullptr),
651
- HasSubstr("Check failed: p == nullptr (0x1234 vs. (null))"));
652
- #endif // _MSC_VER
677
+ AnyOf(
678
+ HasSubstr("Check failed: p == nullptr (0000000000001234 vs. (null))"),
679
+ HasSubstr("Check failed: p == nullptr (0x1234 vs. (null))")));
653
680
  }
654
681
 
655
682
  // An uncopyable object with operator<<.
@@ -679,6 +706,273 @@ TEST(CHECKDeathTest, TestUncopyable) {
679
706
  HasSubstr("Check failed: v1 == v2 (Uncopyable{1} vs. Uncopyable{2})"));
680
707
  }
681
708
 
709
+ enum class ScopedEnum { kValue1 = 1, kValue2 = 2 };
710
+
711
+ TEST(CHECKTest, TestScopedEnumComparisonChecks) {
712
+ ABSL_TEST_CHECK_EQ(ScopedEnum::kValue1, ScopedEnum::kValue1);
713
+ ABSL_TEST_CHECK_NE(ScopedEnum::kValue1, ScopedEnum::kValue2);
714
+ ABSL_TEST_CHECK_LT(ScopedEnum::kValue1, ScopedEnum::kValue2);
715
+ ABSL_TEST_CHECK_LE(ScopedEnum::kValue1, ScopedEnum::kValue2);
716
+ ABSL_TEST_CHECK_GT(ScopedEnum::kValue2, ScopedEnum::kValue1);
717
+ ABSL_TEST_CHECK_GE(ScopedEnum::kValue2, ScopedEnum::kValue2);
718
+ ABSL_TEST_DCHECK_EQ(ScopedEnum::kValue1, ScopedEnum::kValue1);
719
+ ABSL_TEST_DCHECK_NE(ScopedEnum::kValue1, ScopedEnum::kValue2);
720
+ ABSL_TEST_DCHECK_LT(ScopedEnum::kValue1, ScopedEnum::kValue2);
721
+ ABSL_TEST_DCHECK_LE(ScopedEnum::kValue1, ScopedEnum::kValue2);
722
+ ABSL_TEST_DCHECK_GT(ScopedEnum::kValue2, ScopedEnum::kValue1);
723
+ ABSL_TEST_DCHECK_GE(ScopedEnum::kValue2, ScopedEnum::kValue2);
724
+
725
+ // Check that overloads work correctly with references as well.
726
+ const ScopedEnum x = ScopedEnum::kValue1;
727
+ const ScopedEnum& x_ref = x;
728
+ ABSL_TEST_CHECK_EQ(x, x_ref);
729
+ ABSL_TEST_CHECK_EQ(x_ref, x_ref);
730
+ }
731
+
732
+ #if GTEST_HAS_DEATH_TEST
733
+ TEST(CHECKDeathTest, TestScopedEnumCheckFailureMessagePrintsIntegerValues) {
734
+ const auto e1 = ScopedEnum::kValue1;
735
+ const auto e2 = ScopedEnum::kValue2;
736
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(e1, e2),
737
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 2\))re"));
738
+ EXPECT_DEATH(ABSL_TEST_CHECK_NE(e1, e1),
739
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 1\))re"));
740
+ EXPECT_DEATH(ABSL_TEST_CHECK_GT(e1, e1),
741
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 1\))re"));
742
+ EXPECT_DEATH(ABSL_TEST_CHECK_GE(e1, e2),
743
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 2\))re"));
744
+ EXPECT_DEATH(ABSL_TEST_CHECK_LT(e2, e2),
745
+ ContainsRegex(R"re(Check failed:.*\(2 vs. 2\))re"));
746
+ EXPECT_DEATH(ABSL_TEST_CHECK_LE(e2, e1),
747
+ ContainsRegex(R"re(Check failed:.*\(2 vs. 1\))re"));
748
+
749
+ const auto& e1_ref = e1;
750
+ EXPECT_DEATH(ABSL_TEST_CHECK_NE(e1_ref, e1),
751
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 1\))re"));
752
+ EXPECT_DEATH(ABSL_TEST_CHECK_NE(e1_ref, e1_ref),
753
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 1\))re"));
754
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(e2, e1_ref),
755
+ ContainsRegex(R"re(Check failed:.*\(2 vs. 1\))re"));
756
+
757
+ #ifndef NDEBUG
758
+ EXPECT_DEATH(ABSL_TEST_DCHECK_EQ(e2, e1),
759
+ ContainsRegex(R"re(Check failed:.*\(2 vs. 1\))re"));
760
+ #else
761
+ // DHECK_EQ is not evaluated in non-debug mode.
762
+ ABSL_TEST_DCHECK_EQ(e2, e1);
763
+ #endif // NDEBUG
764
+ }
765
+ #endif // GTEST_HAS_DEATH_TEST
766
+
767
+ enum class ScopedInt8Enum : int8_t {
768
+ kValue1 = 1,
769
+ kValue2 = 66 // Printable ascii value 'B'.
770
+ };
771
+
772
+ TEST(CHECKDeathTest, TestScopedInt8EnumCheckFailureMessagePrintsCharValues) {
773
+ const auto e1 = ScopedInt8Enum::kValue1;
774
+ const auto e2 = ScopedInt8Enum::kValue2;
775
+ EXPECT_DEATH(
776
+ ABSL_TEST_CHECK_EQ(e1, e2),
777
+ ContainsRegex(R"re(Check failed:.*\(signed char value 1 vs. 'B'\))re"));
778
+ EXPECT_DEATH(
779
+ ABSL_TEST_CHECK_NE(e1, e1),
780
+ ContainsRegex(
781
+ R"re(Check failed:.*\(signed char value 1 vs. signed char value 1\))re"));
782
+ EXPECT_DEATH(
783
+ ABSL_TEST_CHECK_GT(e1, e1),
784
+ ContainsRegex(
785
+ R"re(Check failed:.*\(signed char value 1 vs. signed char value 1\))re"));
786
+ EXPECT_DEATH(
787
+ ABSL_TEST_CHECK_GE(e1, e2),
788
+ ContainsRegex(R"re(Check failed:.*\(signed char value 1 vs. 'B'\))re"));
789
+ EXPECT_DEATH(ABSL_TEST_CHECK_LT(e2, e2),
790
+ ContainsRegex(R"re(Check failed:.*\('B' vs. 'B'\))re"));
791
+ EXPECT_DEATH(
792
+ ABSL_TEST_CHECK_LE(e2, e1),
793
+ ContainsRegex(R"re(Check failed:.*\('B' vs. signed char value 1\))re"));
794
+ }
795
+
796
+ enum class ScopedUnsignedEnum : uint16_t {
797
+ kValue1 = std::numeric_limits<uint16_t>::min(),
798
+ kValue2 = std::numeric_limits<uint16_t>::max()
799
+ };
800
+
801
+ TEST(CHECKDeathTest,
802
+ TestScopedUnsignedEnumCheckFailureMessagePrintsCorrectValues) {
803
+ const auto e1 = ScopedUnsignedEnum::kValue1;
804
+ const auto e2 = ScopedUnsignedEnum::kValue2;
805
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(e1, e2),
806
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 65535\))re"));
807
+ EXPECT_DEATH(ABSL_TEST_CHECK_NE(e1, e1),
808
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 0\))re"));
809
+ EXPECT_DEATH(ABSL_TEST_CHECK_GT(e1, e1),
810
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 0\))re"));
811
+ EXPECT_DEATH(ABSL_TEST_CHECK_GE(e1, e2),
812
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 65535\))re"));
813
+ EXPECT_DEATH(ABSL_TEST_CHECK_LT(e1, e1),
814
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 0\))re"));
815
+ EXPECT_DEATH(ABSL_TEST_CHECK_LE(e2, e1),
816
+ ContainsRegex(R"re(Check failed:.*\(65535 vs. 0\))re"));
817
+ }
818
+
819
+ enum class ScopedInt64Enum : int64_t {
820
+ kMin = std::numeric_limits<int64_t>::min(),
821
+ kMax = std::numeric_limits<int64_t>::max(),
822
+ };
823
+
824
+ // Tests that int64-backed enums are printed correctly even for very large and
825
+ // very small values.
826
+ TEST(CHECKDeathTest, TestScopedInt64EnumCheckFailureMessage) {
827
+ const auto min = ScopedInt64Enum::kMin;
828
+ const auto max = ScopedInt64Enum::kMax;
829
+ EXPECT_DEATH(
830
+ ABSL_TEST_CHECK_EQ(max, min),
831
+ ContainsRegex(
832
+ "Check failed:.*9223372036854775807 vs. -9223372036854775808"));
833
+ EXPECT_DEATH(
834
+ ABSL_TEST_CHECK_NE(max, max),
835
+ ContainsRegex(
836
+ "Check failed:.*9223372036854775807 vs. 9223372036854775807"));
837
+ EXPECT_DEATH(
838
+ ABSL_TEST_CHECK_GT(min, min),
839
+ ContainsRegex(
840
+ "Check failed:.*-9223372036854775808 vs. -9223372036854775808"));
841
+ EXPECT_DEATH(
842
+ ABSL_TEST_CHECK_GE(min, max),
843
+ ContainsRegex(
844
+ R"(Check failed:.*-9223372036854775808 vs. 9223372036854775807)"));
845
+ EXPECT_DEATH(
846
+ ABSL_TEST_CHECK_LT(max, max),
847
+ ContainsRegex(
848
+ R"(Check failed:.*9223372036854775807 vs. 9223372036854775807)"));
849
+ EXPECT_DEATH(
850
+ ABSL_TEST_CHECK_LE(max, min),
851
+ ContainsRegex(
852
+ R"(Check failed:.*9223372036854775807 vs. -9223372036854775808)"));
853
+ }
854
+
855
+ enum class ScopedBoolEnum : bool {
856
+ kFalse,
857
+ kTrue,
858
+ };
859
+
860
+ TEST(CHECKDeathTest, TestScopedBoolEnumCheckFailureMessagePrintsCorrectValues) {
861
+ const auto t = ScopedBoolEnum::kTrue;
862
+ const auto f = ScopedBoolEnum::kFalse;
863
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(t, f),
864
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 0\))re"));
865
+ EXPECT_DEATH(ABSL_TEST_CHECK_NE(f, f),
866
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 0\))re"));
867
+ EXPECT_DEATH(ABSL_TEST_CHECK_GT(f, f),
868
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 0\))re"));
869
+ EXPECT_DEATH(ABSL_TEST_CHECK_GE(f, t),
870
+ ContainsRegex(R"re(Check failed:.*\(0 vs. 1\))re"));
871
+ EXPECT_DEATH(ABSL_TEST_CHECK_LT(t, t),
872
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 1\))re"));
873
+ EXPECT_DEATH(ABSL_TEST_CHECK_LE(t, f),
874
+ ContainsRegex(R"re(Check failed:.*\(1 vs. 0\))re"));
875
+ }
876
+
877
+ enum class ScopedEnumWithAbslStringify {
878
+ kValue1 = 1,
879
+ kValue2 = 2,
880
+ kValue3 = 3
881
+ };
882
+
883
+ template <typename Sink>
884
+ void AbslStringify(Sink& sink, ScopedEnumWithAbslStringify v) {
885
+ switch (v) {
886
+ case ScopedEnumWithAbslStringify::kValue1:
887
+ sink.Append("AbslStringify: kValue1");
888
+ break;
889
+ case ScopedEnumWithAbslStringify::kValue2:
890
+ sink.Append("AbslStringify: kValue2");
891
+ break;
892
+ case ScopedEnumWithAbslStringify::kValue3:
893
+ sink.Append("AbslStringify: kValue3");
894
+ break;
895
+ }
896
+ }
897
+
898
+ #if GTEST_HAS_DEATH_TEST
899
+ TEST(CHECKDeathTest, TestScopedEnumUsesAbslStringify) {
900
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(ScopedEnumWithAbslStringify::kValue1,
901
+ ScopedEnumWithAbslStringify::kValue2),
902
+ ContainsRegex("Check failed:.*AbslStringify: kValue1 vs. "
903
+ "AbslStringify: kValue2"));
904
+ }
905
+ #endif // GTEST_HAS_DEATH_TEST
906
+
907
+ enum class ScopedEnumWithOutputOperator {
908
+ kValue1 = 1,
909
+ kValue2 = 2,
910
+ };
911
+
912
+ std::ostream& operator<<(std::ostream& os, ScopedEnumWithOutputOperator v) {
913
+ switch (v) {
914
+ case ScopedEnumWithOutputOperator::kValue1:
915
+ os << "OutputOperator: kValue1";
916
+ break;
917
+ case ScopedEnumWithOutputOperator::kValue2:
918
+ os << "OutputOperator: kValue2";
919
+ break;
920
+ }
921
+ return os;
922
+ }
923
+
924
+ #if GTEST_HAS_DEATH_TEST
925
+ TEST(CHECKDeathTest, TestOutputOperatorIsUsedForScopedEnum) {
926
+ EXPECT_DEATH(ABSL_TEST_CHECK_EQ(ScopedEnumWithOutputOperator::kValue1,
927
+ ScopedEnumWithOutputOperator::kValue2),
928
+ ContainsRegex("Check failed:.*OutputOperator: kValue1 vs. "
929
+ "OutputOperator: kValue2"));
930
+ }
931
+ #endif // GTEST_HAS_DEATH_TEST
932
+
933
+ enum class ScopedEnumWithAbslStringifyAndOutputOperator {
934
+ kValue1 = 1,
935
+ kValue2 = 2,
936
+ };
937
+
938
+ template <typename Sink>
939
+ void AbslStringify(Sink& sink, ScopedEnumWithAbslStringifyAndOutputOperator v) {
940
+ switch (v) {
941
+ case ScopedEnumWithAbslStringifyAndOutputOperator::kValue1:
942
+ sink.Append("AbslStringify: kValue1");
943
+ break;
944
+ case ScopedEnumWithAbslStringifyAndOutputOperator::kValue2:
945
+ sink.Append("AbslStringify: kValue2");
946
+ break;
947
+ }
948
+ }
949
+
950
+ std::ostream& operator<<(std::ostream& os,
951
+ ScopedEnumWithAbslStringifyAndOutputOperator v) {
952
+ switch (v) {
953
+ case ScopedEnumWithAbslStringifyAndOutputOperator::kValue1:
954
+ os << "OutputOperator: kValue1";
955
+ break;
956
+ case ScopedEnumWithAbslStringifyAndOutputOperator::kValue2:
957
+ os << "OutputOperator: kValue2";
958
+ break;
959
+ }
960
+ return os;
961
+ }
962
+
963
+ #if GTEST_HAS_DEATH_TEST
964
+
965
+ // Test that, if operator<< and AbslStringify are both defined for a scoped
966
+ // enum, streaming takes precedence over AbslStringify.
967
+ TEST(CHECKDeathTest, TestScopedEnumPrefersOutputOperatorOverAbslStringify) {
968
+ EXPECT_DEATH(
969
+ ABSL_TEST_CHECK_EQ(ScopedEnumWithAbslStringifyAndOutputOperator::kValue1,
970
+ ScopedEnumWithAbslStringifyAndOutputOperator::kValue2),
971
+ ContainsRegex("Check failed:.*OutputOperator: kValue1 vs. "
972
+ "OutputOperator: kValue2"));
973
+ }
974
+ #endif // GTEST_HAS_DEATH_TEST
975
+
682
976
  } // namespace absl_log_internal
683
977
 
684
978
  // NOLINTEND(misc-definitions-in-headers)
@@ -60,8 +60,8 @@ namespace log_internal {
60
60
 
61
61
  // Helper for `ABSL_DIE_IF_NULL`.
62
62
  template <typename T>
63
- ABSL_MUST_USE_RESULT T DieIfNull(const char* file, int line,
64
- const char* exprtext, T&& t) {
63
+ [[nodiscard]] T DieIfNull(const char* file, int line, const char* exprtext,
64
+ T&& t) {
65
65
  if (ABSL_PREDICT_FALSE(t == nullptr)) {
66
66
  // Call a non-inline helper function for a small code size improvement.
67
67
  DieBecauseNull(file, line, exprtext);
@@ -93,6 +93,7 @@ TEST_F(LogFlagsTest, PrependLogPrefix) {
93
93
  TEST_F(LogFlagsTest, EmptyBacktraceAtFlag) {
94
94
  absl::SetMinLogLevel(absl::LogSeverityAtLeast::kInfo);
95
95
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
96
+ EXPECT_CALL(test_sink, Send).Times(0);
96
97
 
97
98
  EXPECT_CALL(test_sink, Send(TextMessage(Not(HasSubstr("(stacktrace:")))));
98
99
 
@@ -104,6 +105,7 @@ TEST_F(LogFlagsTest, EmptyBacktraceAtFlag) {
104
105
  TEST_F(LogFlagsTest, BacktraceAtNonsense) {
105
106
  absl::SetMinLogLevel(absl::LogSeverityAtLeast::kInfo);
106
107
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
108
+ EXPECT_CALL(test_sink, Send).Times(0);
107
109
 
108
110
  EXPECT_CALL(test_sink, Send(TextMessage(Not(HasSubstr("(stacktrace:")))));
109
111
 
@@ -117,6 +119,7 @@ TEST_F(LogFlagsTest, BacktraceAtWrongFile) {
117
119
  const int log_line = __LINE__ + 1;
118
120
  auto do_log = [] { LOG(INFO) << "hello world"; };
119
121
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
122
+ EXPECT_CALL(test_sink, Send).Times(0);
120
123
 
121
124
  EXPECT_CALL(test_sink, Send(TextMessage(Not(HasSubstr("(stacktrace:")))));
122
125
 
@@ -131,6 +134,7 @@ TEST_F(LogFlagsTest, BacktraceAtWrongLine) {
131
134
  const int log_line = __LINE__ + 1;
132
135
  auto do_log = [] { LOG(INFO) << "hello world"; };
133
136
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
137
+ EXPECT_CALL(test_sink, Send).Times(0);
134
138
 
135
139
  EXPECT_CALL(test_sink, Send(TextMessage(Not(HasSubstr("(stacktrace:")))));
136
140
 
@@ -145,6 +149,7 @@ TEST_F(LogFlagsTest, BacktraceAtWholeFilename) {
145
149
  const int log_line = __LINE__ + 1;
146
150
  auto do_log = [] { LOG(INFO) << "hello world"; };
147
151
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
152
+ EXPECT_CALL(test_sink, Send).Times(0);
148
153
 
149
154
  EXPECT_CALL(test_sink, Send(TextMessage(Not(HasSubstr("(stacktrace:")))));
150
155
 
@@ -158,6 +163,7 @@ TEST_F(LogFlagsTest, BacktraceAtNonmatchingSuffix) {
158
163
  const int log_line = __LINE__ + 1;
159
164
  auto do_log = [] { LOG(INFO) << "hello world"; };
160
165
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
166
+ EXPECT_CALL(test_sink, Send).Times(0);
161
167
 
162
168
  EXPECT_CALL(test_sink, Send(TextMessage(Not(HasSubstr("(stacktrace:")))));
163
169
 
@@ -172,6 +178,7 @@ TEST_F(LogFlagsTest, LogsBacktrace) {
172
178
  const int log_line = __LINE__ + 1;
173
179
  auto do_log = [] { LOG(INFO) << "hello world"; };
174
180
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
181
+ EXPECT_CALL(test_sink, Send).Times(0);
175
182
 
176
183
  testing::InSequence seq;
177
184
  EXPECT_CALL(test_sink, Send(TextMessage(HasSubstr("(stacktrace:"))));
@@ -43,7 +43,7 @@ ABSL_NAMESPACE_BEGIN
43
43
  //
44
44
  // Returns the value of the Minimum Log Level parameter.
45
45
  // This function is async-signal-safe.
46
- ABSL_MUST_USE_RESULT absl::LogSeverityAtLeast MinLogLevel();
46
+ [[nodiscard]] absl::LogSeverityAtLeast MinLogLevel();
47
47
 
48
48
  // SetMinLogLevel()
49
49
  //
@@ -82,7 +82,7 @@ class ScopedMinLogLevel final {
82
82
  //
83
83
  // Returns the value of the Stderr Threshold parameter.
84
84
  // This function is async-signal-safe.
85
- ABSL_MUST_USE_RESULT absl::LogSeverityAtLeast StderrThreshold();
85
+ [[nodiscard]] absl::LogSeverityAtLeast StderrThreshold();
86
86
 
87
87
  // SetStderrThreshold()
88
88
  //
@@ -118,8 +118,7 @@ class ScopedStderrThreshold final {
118
118
  //
119
119
  // Returns true if we should log a backtrace at the specified location.
120
120
  namespace log_internal {
121
- ABSL_MUST_USE_RESULT bool ShouldLogBacktraceAt(absl::string_view file,
122
- int line);
121
+ [[nodiscard]] bool ShouldLogBacktraceAt(absl::string_view file, int line);
123
122
  } // namespace log_internal
124
123
 
125
124
  // SetLogBacktraceLocation()
@@ -145,7 +144,7 @@ void ClearLogBacktraceLocation();
145
144
  //
146
145
  // Returns the value of the Prepend Log Prefix option.
147
146
  // This function is async-signal-safe.
148
- ABSL_MUST_USE_RESULT bool ShouldPrependLogPrefix();
147
+ [[nodiscard]] bool ShouldPrependLogPrefix();
149
148
 
150
149
  // EnableLogPrefix()
151
150
  //
@@ -14,6 +14,9 @@
14
14
  # limitations under the License.
15
15
  #
16
16
 
17
+ load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
18
+ load("@rules_cc//cc:cc_library.bzl", "cc_library")
19
+ load("@rules_cc//cc:cc_test.bzl", "cc_test")
17
20
  load(
18
21
  "//absl:copts/configure_copts.bzl",
19
22
  "ABSL_DEFAULT_COPTS",
@@ -68,9 +71,7 @@ cc_library(
68
71
  hdrs = ["check_op.h"],
69
72
  copts = ABSL_DEFAULT_COPTS,
70
73
  linkopts = ABSL_DEFAULT_LINKOPTS,
71
- visibility = [
72
- "//absl/log:__pkg__",
73
- ],
74
+ visibility = ["//absl/log:__pkg__"],
74
75
  deps = [
75
76
  ":nullguard",
76
77
  ":nullstream",
@@ -81,6 +82,7 @@ cc_library(
81
82
  "//absl/base:nullability",
82
83
  "//absl/debugging:leak_check",
83
84
  "//absl/strings",
85
+ "//absl/strings:has_ostream_operator",
84
86
  ],
85
87
  )
86
88
 
@@ -207,6 +209,7 @@ cc_library(
207
209
  "//absl/log:log_sink_registry",
208
210
  "//absl/memory",
209
211
  "//absl/strings",
212
+ "//absl/strings:internal",
210
213
  "//absl/time",
211
214
  "//absl/types:span",
212
215
  ],
@@ -220,6 +223,7 @@ cc_library(
220
223
  deps = [
221
224
  "//absl/base:config",
222
225
  "//absl/strings",
226
+ "//absl/strings:internal",
223
227
  "//absl/types:span",
224
228
  ],
225
229
  )
@@ -415,7 +419,10 @@ cc_library(
415
419
  hdrs = ["voidify.h"],
416
420
  copts = ABSL_DEFAULT_COPTS,
417
421
  linkopts = ABSL_DEFAULT_LINKOPTS,
418
- deps = ["//absl/base:config"],
422
+ deps = [
423
+ "//absl/base:config",
424
+ "//absl/base:core_headers",
425
+ ],
419
426
  )
420
427
 
421
428
  cc_library(
@@ -424,10 +431,6 @@ cc_library(
424
431
  hdrs = ["proto.h"],
425
432
  copts = ABSL_DEFAULT_COPTS,
426
433
  linkopts = ABSL_DEFAULT_LINKOPTS,
427
- visibility = [
428
- ":internal_users",
429
- ":structured_proto_users",
430
- ],
431
434
  deps = [
432
435
  "//absl/base",
433
436
  "//absl/base:config",
@@ -459,11 +462,12 @@ cc_library(
459
462
  "//absl/log:__subpackages__",
460
463
  ],
461
464
  deps = [
465
+ ":fnmatch",
462
466
  "//absl/base",
463
467
  "//absl/base:config",
464
468
  "//absl/base:core_headers",
465
469
  "//absl/base:no_destructor",
466
- "//absl/log/internal:fnmatch",
470
+ "//absl/base:nullability",
467
471
  "//absl/memory",
468
472
  "//absl/strings",
469
473
  "//absl/synchronization",
@@ -17,8 +17,10 @@
17
17
 
18
18
  #include <cstddef>
19
19
  #include <cstring>
20
+ #include <string_view>
20
21
 
21
22
  #include "absl/base/config.h"
23
+ #include "absl/strings/internal/utf8.h"
22
24
  #include "absl/strings/string_view.h"
23
25
  #include "absl/types/span.h"
24
26
 
@@ -33,6 +35,32 @@ inline size_t AppendTruncated(absl::string_view src, absl::Span<char> &dst) {
33
35
  dst.remove_prefix(src.size());
34
36
  return src.size();
35
37
  }
38
+ // Likewise, but it also takes a wide character string and transforms it into a
39
+ // UTF-8 encoded byte string regardless of the current locale.
40
+ // - On platforms where `wchar_t` is 2 bytes (e.g., Windows), the input is
41
+ // treated as UTF-16.
42
+ // - On platforms where `wchar_t` is 4 bytes (e.g., Linux, macOS), the input
43
+ // is treated as UTF-32.
44
+ inline size_t AppendTruncated(std::wstring_view src, absl::Span<char> &dst) {
45
+ absl::strings_internal::ShiftState state;
46
+ size_t total_bytes_written = 0;
47
+ for (const wchar_t wc : src) {
48
+ // If the destination buffer might not be large enough to write the next
49
+ // character, stop.
50
+ if (dst.size() < absl::strings_internal::kMaxEncodedUTF8Size) break;
51
+ size_t bytes_written =
52
+ absl::strings_internal::WideToUtf8(wc, dst.data(), state);
53
+ if (bytes_written == static_cast<size_t>(-1)) {
54
+ // Invalid character. Encode REPLACEMENT CHARACTER (U+FFFD) instead.
55
+ constexpr wchar_t kReplacementCharacter = L'\uFFFD';
56
+ bytes_written = absl::strings_internal::WideToUtf8(kReplacementCharacter,
57
+ dst.data(), state);
58
+ }
59
+ dst.remove_prefix(bytes_written);
60
+ total_bytes_written += bytes_written;
61
+ }
62
+ return total_bytes_written;
63
+ }
36
64
  // Likewise, but `n` copies of `c`.
37
65
  inline size_t AppendTruncated(char c, size_t n, absl::Span<char> &dst) {
38
66
  if (n > dst.size()) n = dst.size();