re2 1.23.0 → 1.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +2 -0
  2. package/binding.gyp +3 -2
  3. package/package.json +5 -5
  4. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +25 -4
  5. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +6 -1
  6. package/vendor/abseil-cpp/CMakeLists.txt +2 -2
  7. package/vendor/abseil-cpp/MODULE.bazel +2 -2
  8. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +0 -1
  9. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +0 -2
  10. package/vendor/abseil-cpp/absl/algorithm/container.h +191 -140
  11. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +818 -0
  12. package/vendor/abseil-cpp/absl/base/BUILD.bazel +44 -5
  13. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +42 -3
  14. package/vendor/abseil-cpp/absl/base/attributes.h +5 -1
  15. package/vendor/abseil-cpp/absl/base/call_once_test.cc +10 -10
  16. package/vendor/abseil-cpp/absl/base/casts.cc +61 -0
  17. package/vendor/abseil-cpp/absl/base/casts.h +128 -2
  18. package/vendor/abseil-cpp/absl/base/casts_test.cc +151 -0
  19. package/vendor/abseil-cpp/absl/base/config.h +13 -37
  20. package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  21. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +4 -0
  22. package/vendor/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
  23. package/vendor/abseil-cpp/absl/base/internal/nullability_traits_test.cc +98 -0
  24. package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  25. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +13 -7
  26. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +16 -11
  27. package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +2 -1
  28. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +0 -9
  29. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +0 -6
  30. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -1
  31. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  32. package/vendor/abseil-cpp/absl/base/macros.h +40 -17
  33. package/vendor/abseil-cpp/absl/base/nullability.h +1 -1
  34. package/vendor/abseil-cpp/absl/base/optimization.h +1 -3
  35. package/vendor/abseil-cpp/absl/base/options.h +1 -27
  36. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +5 -8
  37. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +4 -0
  38. package/vendor/abseil-cpp/absl/container/BUILD.bazel +195 -2
  39. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +136 -2
  40. package/vendor/abseil-cpp/absl/container/btree_map.h +56 -6
  41. package/vendor/abseil-cpp/absl/container/btree_set.h +52 -6
  42. package/vendor/abseil-cpp/absl/container/btree_test.cc +107 -1
  43. package/vendor/abseil-cpp/absl/container/chunked_queue.h +755 -0
  44. package/vendor/abseil-cpp/absl/container/chunked_queue_benchmark.cc +386 -0
  45. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +768 -0
  46. package/vendor/abseil-cpp/absl/container/fixed_array.h +4 -6
  47. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +16 -6
  48. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +1 -2
  49. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +16 -6
  50. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +0 -2
  51. package/vendor/abseil-cpp/absl/container/inlined_vector.h +12 -4
  52. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +21 -0
  53. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +14 -5
  54. package/vendor/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
  55. package/vendor/abseil-cpp/absl/container/internal/common.h +51 -0
  56. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +7 -1
  57. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +11 -0
  58. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +0 -2
  59. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +1 -2
  60. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +0 -14
  61. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +11 -8
  62. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +3 -4
  63. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +23 -6
  64. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +31 -15
  65. package/vendor/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
  66. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +4 -12
  67. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -10
  68. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +149 -23
  69. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +120 -126
  70. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +4 -0
  71. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +8 -0
  72. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +14 -59
  73. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +111 -22
  74. package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +53 -112
  75. package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +10 -15
  76. package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +3 -3
  77. package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +45 -61
  78. package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +53 -112
  79. package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +6 -9
  80. package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +3 -3
  81. package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +25 -31
  82. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +666 -0
  83. package/vendor/abseil-cpp/absl/container/linked_hash_map_benchmark.cc +140 -0
  84. package/vendor/abseil-cpp/absl/container/linked_hash_map_test.cc +987 -0
  85. package/vendor/abseil-cpp/absl/container/linked_hash_set.h +527 -0
  86. package/vendor/abseil-cpp/absl/container/linked_hash_set_benchmark.cc +84 -0
  87. package/vendor/abseil-cpp/absl/container/linked_hash_set_test.cc +947 -0
  88. package/vendor/abseil-cpp/absl/container/node_hash_map.h +17 -6
  89. package/vendor/abseil-cpp/absl/container/node_hash_set.h +16 -5
  90. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +1 -2
  91. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +79 -0
  92. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +79 -0
  93. package/vendor/abseil-cpp/absl/copts/copts.py +17 -4
  94. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +67 -13
  95. package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  96. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +31 -0
  97. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +34 -0
  98. package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +2 -2
  99. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +118 -0
  100. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +71 -0
  101. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +97 -0
  102. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  103. package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  104. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +4 -0
  105. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -0
  106. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +1 -1
  107. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -7
  108. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  109. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +2 -1
  110. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  111. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +2 -2
  112. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +35 -67
  113. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +3 -0
  114. package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +24 -1
  115. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +39 -15
  116. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  117. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +25 -40
  118. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  119. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +1 -0
  120. package/vendor/abseil-cpp/absl/flags/declare.h +9 -0
  121. package/vendor/abseil-cpp/absl/flags/flag.h +2 -1
  122. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  123. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +3 -2
  124. package/vendor/abseil-cpp/absl/flags/marshalling.cc +1 -16
  125. package/vendor/abseil-cpp/absl/flags/parse.cc +4 -2
  126. package/vendor/abseil-cpp/absl/flags/parse_test.cc +1 -1
  127. package/vendor/abseil-cpp/absl/flags/reflection.cc +4 -3
  128. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +4 -0
  129. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +4 -0
  130. package/vendor/abseil-cpp/absl/functional/any_invocable.h +3 -1
  131. package/vendor/abseil-cpp/absl/functional/function_ref.h +125 -20
  132. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +122 -9
  133. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +13 -2
  134. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +42 -4
  135. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +11 -0
  136. package/vendor/abseil-cpp/absl/hash/hash_test.cc +5 -2
  137. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +184 -53
  138. package/vendor/abseil-cpp/absl/hash/internal/hash.h +116 -10
  139. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +43 -4
  140. package/vendor/abseil-cpp/absl/log/BUILD.bazel +2 -0
  141. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +35 -1
  142. package/vendor/abseil-cpp/absl/log/check_test_impl.inc +59 -4
  143. package/vendor/abseil-cpp/absl/log/die_if_null.cc +3 -1
  144. package/vendor/abseil-cpp/absl/log/die_if_null.h +24 -3
  145. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +31 -1
  146. package/vendor/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  147. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +3 -1
  148. package/vendor/abseil-cpp/absl/log/internal/check_op.h +44 -18
  149. package/vendor/abseil-cpp/absl/log/internal/conditions.h +38 -35
  150. package/vendor/abseil-cpp/absl/log/internal/container.h +312 -0
  151. package/vendor/abseil-cpp/absl/log/internal/container_test.cc +254 -0
  152. package/vendor/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  153. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -2
  154. package/vendor/abseil-cpp/absl/log/internal/log_message.h +5 -1
  155. package/vendor/abseil-cpp/absl/log/internal/strip.h +30 -31
  156. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +19 -19
  157. package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  158. package/vendor/abseil-cpp/absl/log/log.h +2 -2
  159. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +51 -0
  160. package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +46 -0
  161. package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
  162. package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc +40 -0
  163. package/vendor/abseil-cpp/absl/meta/internal/requires.h +67 -0
  164. package/vendor/abseil-cpp/absl/meta/internal/requires_test.cc +66 -0
  165. package/vendor/abseil-cpp/absl/meta/type_traits.h +42 -1
  166. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +14 -0
  167. package/vendor/abseil-cpp/absl/numeric/int128.h +41 -21
  168. package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  169. package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  170. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +52 -5
  171. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +1 -0
  172. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +1 -0
  173. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +18 -7
  174. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +1 -0
  175. package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +3 -5
  176. package/vendor/abseil-cpp/absl/random/internal/platform.h +0 -13
  177. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +0 -1
  178. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +1 -27
  179. package/vendor/abseil-cpp/absl/status/BUILD.bazel +17 -0
  180. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +16 -0
  181. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +4 -2
  182. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +2 -2
  183. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +2 -1
  184. package/vendor/abseil-cpp/absl/status/status.cc +4 -0
  185. package/vendor/abseil-cpp/absl/status/status.h +5 -0
  186. package/vendor/abseil-cpp/absl/status/status_matchers.h +48 -0
  187. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +27 -0
  188. package/vendor/abseil-cpp/absl/status/status_test.cc +1 -0
  189. package/vendor/abseil-cpp/absl/status/statusor.h +1 -1
  190. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +101 -21
  191. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +99 -5
  192. package/vendor/abseil-cpp/absl/strings/ascii.h +9 -4
  193. package/vendor/abseil-cpp/absl/strings/cord.cc +15 -10
  194. package/vendor/abseil-cpp/absl/strings/cord.h +1 -1
  195. package/vendor/abseil-cpp/absl/strings/escaping.cc +126 -94
  196. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  197. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc +95 -0
  198. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +2 -0
  199. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +8 -8
  200. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +24 -18
  201. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +10 -16
  202. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +9 -7
  203. package/vendor/abseil-cpp/absl/strings/internal/generic_printer.cc +107 -0
  204. package/vendor/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
  205. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +423 -0
  206. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +685 -0
  207. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -12
  208. package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  209. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +21 -7
  210. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +495 -8
  211. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -15
  212. package/vendor/abseil-cpp/absl/strings/numbers.cc +71 -8
  213. package/vendor/abseil-cpp/absl/strings/numbers.h +25 -12
  214. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +70 -0
  215. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +194 -0
  216. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite_test.cc +154 -0
  217. package/vendor/abseil-cpp/absl/strings/str_cat.cc +96 -91
  218. package/vendor/abseil-cpp/absl/strings/str_cat.h +17 -12
  219. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +4 -4
  220. package/vendor/abseil-cpp/absl/strings/str_split.h +1 -1
  221. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +1 -1
  222. package/vendor/abseil-cpp/absl/strings/string_view.h +8 -718
  223. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1 -1265
  224. package/vendor/abseil-cpp/absl/strings/substitute.cc +24 -24
  225. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +2 -3
  226. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +1 -0
  227. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  228. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout_test.cc +15 -5
  229. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2 -1
  230. package/vendor/abseil-cpp/absl/synchronization/mutex.h +47 -23
  231. package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
  232. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +2 -0
  233. package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +1 -2
  234. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +58 -103
  235. package/vendor/abseil-cpp/absl/time/clock.cc +18 -16
  236. package/vendor/abseil-cpp/absl/time/clock_test.cc +2 -2
  237. package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +144 -0
  238. package/vendor/abseil-cpp/absl/time/duration_test.cc +26 -29
  239. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +7 -1
  240. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +4 -2
  241. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  242. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +186 -0
  243. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  244. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  245. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
  246. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
  247. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
  248. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
  249. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +9 -9
  250. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +12 -12
  251. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +47 -47
  252. package/vendor/abseil-cpp/absl/time/time.cc +4 -4
  253. package/vendor/abseil-cpp/absl/time/time.h +10 -10
  254. package/vendor/abseil-cpp/absl/time/time_test.cc +1 -0
  255. package/vendor/abseil-cpp/absl/types/compare.h +62 -61
  256. package/vendor/abseil-cpp/absl/types/compare_test.cc +3 -3
  257. package/vendor/abseil-cpp/absl/types/internal/span.h +1 -0
  258. package/vendor/abseil-cpp/absl/types/optional.h +2 -2
  259. package/vendor/abseil-cpp/absl/types/span.h +10 -2
  260. package/vendor/abseil-cpp/absl/utility/utility.h +13 -0
  261. package/vendor/abseil-cpp/ci/absl_alternate_options.h +0 -1
  262. package/vendor/abseil-cpp/ci/cmake_common.sh +1 -1
  263. package/vendor/abseil-cpp/ci/cmake_install_test.sh +6 -0
  264. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +1 -0
  265. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +2 -0
  266. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +1 -0
  267. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +1 -0
  268. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +1 -0
  269. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +1 -0
  270. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +1 -0
  271. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +6 -0
  272. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +6 -0
  273. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +3 -2
  274. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +5 -0
  275. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -0
  276. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -0
  277. package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +6 -1
  278. package/vendor/abseil-cpp/absl/base/internal/identity.h +0 -39
  279. package/vendor/abseil-cpp/absl/strings/string_view.cc +0 -257
  280. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +0 -380
@@ -73,17 +73,11 @@ constexpr int128::int128(unsigned long long v) : v_{v} {}
73
73
 
74
74
  constexpr int128::int128(unsigned __int128 v) : v_{static_cast<__int128>(v)} {}
75
75
 
76
- inline int128::int128(float v) {
77
- v_ = static_cast<__int128>(v);
78
- }
76
+ constexpr int128::int128(float v) : v_{static_cast<__int128>(v)} {}
79
77
 
80
- inline int128::int128(double v) {
81
- v_ = static_cast<__int128>(v);
82
- }
78
+ constexpr int128::int128(double v) : v_{static_cast<__int128>(v)} {}
83
79
 
84
- inline int128::int128(long double v) {
85
- v_ = static_cast<__int128>(v);
86
- }
80
+ constexpr int128::int128(long double v) : v_{static_cast<__int128>(v)} {}
87
81
 
88
82
  constexpr int128::int128(uint128 v) : v_{static_cast<__int128>(v)} {}
89
83
 
@@ -119,9 +113,7 @@ constexpr int128::operator unsigned short() const { // NOLINT(runtime/int)
119
113
  return static_cast<unsigned short>(v_); // NOLINT(runtime/int)
120
114
  }
121
115
 
122
- constexpr int128::operator int() const {
123
- return static_cast<int>(v_);
124
- }
116
+ constexpr int128::operator int() const { return static_cast<int>(v_); }
125
117
 
126
118
  constexpr int128::operator unsigned int() const {
127
119
  return static_cast<unsigned int>(v_);
@@ -153,17 +145,17 @@ constexpr int128::operator unsigned __int128() const {
153
145
  // conversions. In that case, we do the conversion with a similar implementation
154
146
  // to the conversion operators in int128_no_intrinsic.inc.
155
147
  #if defined(__clang__) && !defined(__ppc64__)
156
- inline int128::operator float() const { return static_cast<float>(v_); }
148
+ constexpr int128::operator float() const { return static_cast<float>(v_); }
157
149
 
158
- inline int128::operator double() const { return static_cast<double>(v_); }
150
+ constexpr int128::operator double() const { return static_cast<double>(v_); }
159
151
 
160
- inline int128::operator long double() const {
152
+ constexpr int128::operator long double() const {
161
153
  return static_cast<long double>(v_);
162
154
  }
163
155
 
164
- #else // Clang on PowerPC
156
+ #else // Clang on PowerPC
165
157
 
166
- inline int128::operator float() const {
158
+ constexpr int128::operator float() const {
167
159
  // We must convert the absolute value and then negate as needed, because
168
160
  // floating point types are typically sign-magnitude. Otherwise, the
169
161
  // difference between the high and low 64 bits when interpreted as two's
@@ -177,7 +169,7 @@ inline int128::operator float() const {
177
169
  static_cast<float>(Int128High64(*this)) * pow_2_64;
178
170
  }
179
171
 
180
- inline int128::operator double() const {
172
+ constexpr int128::operator double() const {
181
173
  // See comment in int128::operator float() above.
182
174
  constexpr double pow_2_64 = 18446744073709551616.0;
183
175
  return v_ < 0 && *this != Int128Min()
@@ -186,7 +178,7 @@ inline int128::operator double() const {
186
178
  static_cast<double>(Int128High64(*this)) * pow_2_64;
187
179
  }
188
180
 
189
- inline int128::operator long double() const {
181
+ constexpr int128::operator long double() const {
190
182
  // See comment in int128::operator float() above.
191
183
  constexpr long double pow_2_64 = 18446744073709551616.0L;
192
184
  return v_ < 0 && *this != Int128Min()
@@ -254,17 +246,19 @@ constexpr int128 operator-(int128 lhs, int128 rhs) {
254
246
  return static_cast<__int128>(lhs) - static_cast<__int128>(rhs);
255
247
  }
256
248
 
257
- inline int128 operator*(int128 lhs, int128 rhs) {
249
+ #if defined(ABSL_HAVE_INTRINSIC_INT128)
250
+ constexpr int128 operator*(int128 lhs, int128 rhs) {
258
251
  return static_cast<__int128>(lhs) * static_cast<__int128>(rhs);
259
252
  }
260
253
 
261
- inline int128 operator/(int128 lhs, int128 rhs) {
254
+ constexpr int128 operator/(int128 lhs, int128 rhs) {
262
255
  return static_cast<__int128>(lhs) / static_cast<__int128>(rhs);
263
256
  }
264
257
 
265
- inline int128 operator%(int128 lhs, int128 rhs) {
258
+ constexpr int128 operator%(int128 lhs, int128 rhs) {
266
259
  return static_cast<__int128>(lhs) % static_cast<__int128>(rhs);
267
260
  }
261
+ #endif // ABSL_HAVE_INTRINSIC_INT128
268
262
 
269
263
  inline int128 int128::operator++(int) {
270
264
  int128 tmp(*this);
@@ -132,7 +132,7 @@ constexpr int128::operator unsigned long long() const { // NOLINT(runtime/int)
132
132
  return static_cast<unsigned long long>(lo_); // NOLINT(runtime/int)
133
133
  }
134
134
 
135
- inline int128::operator float() const {
135
+ constexpr int128::operator float() const {
136
136
  // We must convert the absolute value and then negate as needed, because
137
137
  // floating point types are typically sign-magnitude. Otherwise, the
138
138
  // difference between the high and low 64 bits when interpreted as two's
@@ -142,20 +142,18 @@ inline int128::operator float() const {
142
142
  constexpr float pow_2_64 = 18446744073709551616.0f;
143
143
  return hi_ < 0 && *this != Int128Min()
144
144
  ? -static_cast<float>(-*this)
145
- : static_cast<float>(lo_) +
146
- static_cast<float>(hi_) * pow_2_64;
145
+ : static_cast<float>(lo_) + static_cast<float>(hi_) * pow_2_64;
147
146
  }
148
147
 
149
- inline int128::operator double() const {
148
+ constexpr int128::operator double() const {
150
149
  // See comment in int128::operator float() above.
151
150
  constexpr double pow_2_64 = 18446744073709551616.0;
152
151
  return hi_ < 0 && *this != Int128Min()
153
152
  ? -static_cast<double>(-*this)
154
- : static_cast<double>(lo_) +
155
- static_cast<double>(hi_) * pow_2_64;
153
+ : static_cast<double>(lo_) + static_cast<double>(hi_) * pow_2_64;
156
154
  }
157
155
 
158
- inline int128::operator long double() const {
156
+ constexpr int128::operator long double() const {
159
157
  // See comment in int128::operator float() above.
160
158
  constexpr long double pow_2_64 = 18446744073709551616.0L;
161
159
  return hi_ < 0 && *this != Int128Min()
@@ -350,7 +350,7 @@ TEST(Uint128, Multiply) {
350
350
  c = a * b;
351
351
  EXPECT_EQ(absl::MakeUint128(0x530EDA741C71D4C3, 0xBF25975319080000), c);
352
352
  EXPECT_EQ(0, c - b * a);
353
- EXPECT_EQ(a*a - b*b, (a+b) * (a-b));
353
+ EXPECT_EQ(a * a - b * b, (a + b) * (a - b));
354
354
 
355
355
  // Verified with dc.
356
356
  a = absl::MakeUint128(0x0123456789abcdef, 0xfedcba9876543210);
@@ -358,7 +358,7 @@ TEST(Uint128, Multiply) {
358
358
  c = a * b;
359
359
  EXPECT_EQ(absl::MakeUint128(0x97a87f4f261ba3f2, 0x342d0bbf48948200), c);
360
360
  EXPECT_EQ(0, c - b * a);
361
- EXPECT_EQ(a*a - b*b, (a+b) * (a-b));
361
+ EXPECT_EQ(a * a - b * b, (a + b) * (a - b));
362
362
  }
363
363
 
364
364
  TEST(Uint128, AliasTests) {
@@ -462,6 +462,26 @@ TEST(Uint128, ConstexprTest) {
462
462
  EXPECT_EQ(zero, absl::uint128(0));
463
463
  EXPECT_EQ(one, absl::uint128(1));
464
464
  EXPECT_EQ(minus_two, absl::MakeUint128(-1, -2));
465
+
466
+ constexpr double f = static_cast<float>(absl::uint128(123));
467
+ EXPECT_EQ(f, 123.0f);
468
+
469
+ constexpr double d = static_cast<double>(absl::uint128(123));
470
+ EXPECT_EQ(d, 123.0);
471
+
472
+ constexpr long double ld = static_cast<long double>(absl::uint128(123));
473
+ EXPECT_EQ(ld, 123.0);
474
+
475
+ #ifdef ABSL_HAVE_INTRINSIC_INT128
476
+ constexpr absl::uint128 division = absl::uint128(10) / absl::uint128(2);
477
+ EXPECT_EQ(division, absl::uint128(5));
478
+
479
+ constexpr absl::uint128 modulus = absl::int128(10) % absl::int128(3);
480
+ EXPECT_EQ(modulus, absl::uint128(1));
481
+
482
+ constexpr absl::uint128 multiplication = absl::uint128(10) * absl::uint128(3);
483
+ EXPECT_EQ(multiplication, absl::uint128(30));
484
+ #endif // ABSL_HAVE_INTRINSIC_INT128
465
485
  }
466
486
 
467
487
  TEST(Uint128, NumericLimitsTest) {
@@ -522,7 +542,6 @@ TEST(Uint128, Hash) {
522
542
  EXPECT_TRUE(absl::VerifyTypeImplementsAbslHashCorrectly(values));
523
543
  }
524
544
 
525
-
526
545
  TEST(Int128Uint128, ConversionTest) {
527
546
  absl::int128 nonnegative_signed_values[] = {
528
547
  0,
@@ -540,8 +559,7 @@ TEST(Int128Uint128, ConversionTest) {
540
559
  }
541
560
 
542
561
  absl::int128 negative_values[] = {
543
- -1, -0x1234567890abcdef,
544
- absl::MakeInt128(-0x5544332211ffeedd, 0),
562
+ -1, -0x1234567890abcdef, absl::MakeInt128(-0x5544332211ffeedd, 0),
545
563
  -absl::MakeInt128(0x76543210fedcba98, 0xabcdef0123456789)};
546
564
  for (absl::int128 value : negative_values) {
547
565
  EXPECT_EQ(absl::uint128(-value), -absl::uint128(value));
@@ -769,6 +787,35 @@ TEST(Int128, ConstexprTest) {
769
787
  EXPECT_EQ(minus_two, absl::MakeInt128(-1, -2));
770
788
  EXPECT_GT(max, one);
771
789
  EXPECT_LT(min, minus_two);
790
+
791
+ constexpr double f = static_cast<float>(absl::int128(123));
792
+ EXPECT_EQ(f, 123.0f);
793
+
794
+ constexpr double d = static_cast<double>(absl::int128(123));
795
+ EXPECT_EQ(d, 123.0);
796
+
797
+ constexpr long double ld = static_cast<long double>(absl::int128(123));
798
+ EXPECT_EQ(ld, 123.0);
799
+
800
+ #ifdef ABSL_HAVE_INTRINSIC_INT128
801
+ constexpr absl::int128 f_int128(static_cast<float>(123.0));
802
+ EXPECT_EQ(f_int128, absl::int128(123));
803
+
804
+ constexpr absl::int128 d_int128(static_cast<double>(123.0));
805
+ EXPECT_EQ(d_int128, absl::int128(123));
806
+
807
+ constexpr absl::int128 ld_int128(static_cast<long double>(123.0));
808
+ EXPECT_EQ(ld_int128, absl::int128(123));
809
+
810
+ constexpr absl::int128 division = absl::int128(10) / absl::int128(2);
811
+ EXPECT_EQ(division, absl::int128(5));
812
+
813
+ constexpr absl::int128 modulus = absl::int128(10) % absl::int128(3);
814
+ EXPECT_EQ(modulus, absl::int128(1));
815
+
816
+ constexpr absl::int128 multiplication = absl::int128(10) * absl::int128(3);
817
+ EXPECT_EQ(multiplication, absl::int128(30));
818
+ #endif // ABSL_HAVE_INTRINSIC_INT128
772
819
  }
773
820
 
774
821
  TEST(Int128, ComparisonTest) {
@@ -161,6 +161,7 @@ cc_library(
161
161
  "//absl/container:btree",
162
162
  "//absl/container:flat_hash_map",
163
163
  "//absl/strings",
164
+ "//absl/strings:str_format",
164
165
  "//absl/types:span",
165
166
  ],
166
167
  )
@@ -109,6 +109,7 @@ absl_cc_library(
109
109
  absl::flat_hash_map
110
110
  absl::btree
111
111
  absl::strings
112
+ absl::str_format
112
113
  absl::span
113
114
  )
114
115
 
@@ -42,6 +42,8 @@ StatusOr<std::string> MarshalHashtableProfile() {
42
42
 
43
43
  namespace debugging_internal {
44
44
 
45
+ static void DroppedHashtableSample() {}
46
+
45
47
  StatusOr<std::string> MarshalHashtableProfile(
46
48
  container_internal::HashtablezSampler& sampler, Time now) {
47
49
  static constexpr absl::string_view kDropFrames =
@@ -58,6 +60,7 @@ StatusOr<std::string> MarshalHashtableProfile(
58
60
  const auto capacity_id = builder.InternString("capacity");
59
61
  const auto size_id = builder.InternString("size");
60
62
  const auto num_erases_id = builder.InternString("num_erases");
63
+ const auto num_insert_hits_id = builder.InternString("num_insert_hits");
61
64
  const auto num_rehashes_id = builder.InternString("num_rehashes");
62
65
  const auto max_probe_length_id = builder.InternString("max_probe_length");
63
66
  const auto total_probe_length_id = builder.InternString("total_probe_length");
@@ -67,7 +70,6 @@ StatusOr<std::string> MarshalHashtableProfile(
67
70
  const auto key_size_id = builder.InternString("key_size");
68
71
  const auto value_size_id = builder.InternString("value_size");
69
72
  const auto soo_capacity_id = builder.InternString("soo_capacity");
70
- const auto checksum_id = builder.InternString("checksum");
71
73
  const auto table_age_id = builder.InternString("table_age");
72
74
  const auto max_reserve_id = builder.InternString("max_reserve");
73
75
 
@@ -87,6 +89,9 @@ StatusOr<std::string> MarshalHashtableProfile(
87
89
  add_label(size_id, info.size.load(std::memory_order_relaxed));
88
90
  add_label(num_erases_id,
89
91
  info.num_erases.load(std::memory_order_relaxed));
92
+ // TODO(b/436909492): Revisit whether this value is useful.
93
+ add_label(num_insert_hits_id,
94
+ info.num_insert_hits.load(std::memory_order_relaxed));
90
95
  add_label(num_rehashes_id,
91
96
  info.num_rehashes.load(std::memory_order_relaxed));
92
97
  add_label(max_probe_length_id,
@@ -100,8 +105,6 @@ StatusOr<std::string> MarshalHashtableProfile(
100
105
  add_label(key_size_id, info.key_size);
101
106
  add_label(value_size_id, info.value_size);
102
107
  add_label(soo_capacity_id, info.soo_capacity);
103
- add_label(checksum_id,
104
- info.hashes_bitwise_xor.load(std::memory_order_relaxed));
105
108
  add_label(
106
109
  table_age_id,
107
110
  static_cast<uint64_t>(ToInt64Microseconds(now - info.create_time)));
@@ -111,10 +114,18 @@ StatusOr<std::string> MarshalHashtableProfile(
111
114
  MakeSpan(info.stack, info.depth), labels);
112
115
  });
113
116
 
114
- // TODO(b/262310142): Make this more structured data.
115
- StringId comment_id =
116
- builder.InternString(StrCat("dropped_samples: ", dropped));
117
- builder.set_comment_id(comment_id);
117
+ if (dropped > 0) {
118
+ // If we dropped samples, we don't have information for them, including
119
+ // their sizes. The non-zero weight allows it to be noticed in the profile
120
+ // and examined more closely.
121
+ //
122
+ // We compensate for the fixup done by AddSample by adjusting the address
123
+ // here.
124
+ const void* kFakeStack[] = {
125
+ absl::bit_cast<void*>(
126
+ reinterpret_cast<uintptr_t>(&DroppedHashtableSample)+1)};
127
+ builder.AddSample(static_cast<int64_t>(dropped), kFakeStack, {});
128
+ }
118
129
  builder.AddCurrentMappings();
119
130
  return std::move(builder).Emit();
120
131
  }
@@ -32,6 +32,7 @@
32
32
  #include "absl/base/internal/raw_logging.h"
33
33
  #include "absl/strings/escaping.h"
34
34
  #include "absl/strings/str_cat.h"
35
+ #include "absl/strings/str_format.h"
35
36
  #include "absl/types/span.h"
36
37
 
37
38
  namespace absl {
@@ -16,12 +16,10 @@
16
16
 
17
17
  #include "gtest/gtest.h"
18
18
 
19
- #if defined(__native_client__) || defined(__EMSCRIPTEN__)
20
- // NACL has a less accurate implementation of std::log2 than most of
19
+ #if defined(__EMSCRIPTEN__)
20
+ // Emscripten has a less accurate implementation of std::log2 than most of
21
21
  // the other platforms. For some values which should have integral results,
22
- // sometimes NACL returns slightly larger values.
23
- //
24
- // The MUSL libc used by emscripten also has a similar bug.
22
+ // sometimes Emscripten returns slightly larger values.
25
23
  #define ABSL_RANDOM_INACCURATE_LOG2
26
24
  #endif
27
25
 
@@ -35,7 +35,6 @@
35
35
  // Darwin (macOS and iOS) __APPLE__
36
36
  // Akaros (http://akaros.org) __ros__
37
37
  // Windows _WIN32
38
- // NaCL __native_client__
39
38
  // AsmJS __asmjs__
40
39
  // WebAssembly __wasm__
41
40
  // Fuchsia __Fuchsia__
@@ -125,12 +124,6 @@
125
124
 
126
125
  #endif
127
126
 
128
- // NaCl does not allow AES.
129
- #if defined(__native_client__)
130
- #undef ABSL_HAVE_ACCELERATED_AES
131
- #define ABSL_HAVE_ACCELERATED_AES 0
132
- #endif
133
-
134
127
  // ABSL_RANDOM_INTERNAL_AES_DISPATCH indicates whether the currently active
135
128
  // platform has, or should use run-time dispatch for selecting the
136
129
  // accelerated Randen implementation.
@@ -162,10 +155,4 @@
162
155
  #define ABSL_RANDOM_INTERNAL_AES_DISPATCH 1
163
156
  #endif
164
157
 
165
- // NaCl does not allow dispatch.
166
- #if defined(__native_client__)
167
- #undef ABSL_RANDOM_INTERNAL_AES_DISPATCH
168
- #define ABSL_RANDOM_INTERNAL_AES_DISPATCH 0
169
- #endif
170
-
171
158
  #endif // ABSL_RANDOM_INTERNAL_PLATFORM_H_
@@ -632,7 +632,6 @@ TEST(RandenTest, IsFastOrSlow) {
632
632
  //
633
633
  // linux, optimized ~5ns
634
634
  // ppc, optimized ~7ns
635
- // nacl (slow), ~1100ns
636
635
  //
637
636
  // `kCount` is chosen below so that, in debug builds and without hardware
638
637
  // acceleration, the test (assuming ~1us per call) should finish in ~0.1s
@@ -41,12 +41,7 @@
41
41
  #include "absl/types/optional.h"
42
42
  #include "absl/types/span.h"
43
43
 
44
- #if defined(__native_client__)
45
-
46
- #include <nacl/nacl_random.h>
47
- #define ABSL_RANDOM_USE_NACL_SECURE_RANDOM 1
48
-
49
- #elif defined(_WIN32)
44
+ #if defined(_WIN32)
50
45
 
51
46
  #include <windows.h>
52
47
  #define ABSL_RANDOM_USE_BCRYPT 1
@@ -109,27 +104,6 @@ bool ReadSeedMaterialFromOSEntropyImpl(absl::Span<uint32_t> values) {
109
104
  return BCRYPT_SUCCESS(ret);
110
105
  }
111
106
 
112
- #elif defined(ABSL_RANDOM_USE_NACL_SECURE_RANDOM)
113
-
114
- // On NaCL use nacl_secure_random to acquire bytes.
115
- bool ReadSeedMaterialFromOSEntropyImpl(absl::Span<uint32_t> values) {
116
- auto buffer = reinterpret_cast<uint8_t*>(values.data());
117
- size_t buffer_size = sizeof(uint32_t) * values.size();
118
-
119
- uint8_t* output_ptr = buffer;
120
- while (buffer_size > 0) {
121
- size_t nread = 0;
122
- const int error = nacl_secure_random(output_ptr, buffer_size, &nread);
123
- if (error != 0 || nread > buffer_size) {
124
- ABSL_RAW_LOG(ERROR, "Failed to read secure_random seed data: %d", error);
125
- return false;
126
- }
127
- output_ptr += nread;
128
- buffer_size -= nread;
129
- }
130
- return true;
131
- }
132
-
133
107
  #elif defined(__Fuchsia__)
134
108
 
135
109
  bool ReadSeedMaterialFromOSEntropyImpl(absl::Span<uint32_t> values) {
@@ -192,3 +192,20 @@ cc_test(
192
192
  "@googletest//:gtest_main",
193
193
  ],
194
194
  )
195
+
196
+ cc_test(
197
+ name = "status_matchers_with_unqualified_macros_test",
198
+ size = "small",
199
+ srcs = ["status_matchers_test.cc"],
200
+ copts = ABSL_TEST_COPTS,
201
+ linkopts = ABSL_DEFAULT_LINKOPTS,
202
+ local_defines = ["ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS"],
203
+ deps = [
204
+ ":status",
205
+ ":status_matchers",
206
+ ":statusor",
207
+ "//absl/strings",
208
+ "@googletest//:gtest",
209
+ "@googletest//:gtest_main",
210
+ ],
211
+ )
@@ -141,3 +141,19 @@ absl_cc_test(
141
141
  absl::status_matchers
142
142
  GTest::gmock_main
143
143
  )
144
+
145
+ absl_cc_test(
146
+ NAME
147
+ status_matchers_with_unqualified_macros_test
148
+ SRCS
149
+ "status_matchers_test.cc"
150
+ COPTS
151
+ ${ABSL_TEST_COPTS}
152
+ DEFINES
153
+ "ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS"
154
+ DEPS
155
+ absl::status
156
+ absl::statusor
157
+ absl::status_matchers
158
+ GTest::gmock_main
159
+ )
@@ -38,9 +38,11 @@ ABSL_NAMESPACE_BEGIN
38
38
  // TODO(b/176172494): ABSL_MUST_USE_RESULT should expand to the more strict
39
39
  // [[nodiscard]]. For now, just use [[nodiscard]] directly when it is available.
40
40
  #if ABSL_HAVE_CPP_ATTRIBUTE(nodiscard)
41
- class [[nodiscard]] ABSL_ATTRIBUTE_TRIVIAL_ABI Status;
41
+ class [[nodiscard]] ABSL_ATTRIBUTE_TRIVIAL_ABI
42
+ Status;
42
43
  #else
43
- class ABSL_MUST_USE_RESULT ABSL_ATTRIBUTE_TRIVIAL_ABI Status;
44
+ class ABSL_MUST_USE_RESULT ABSL_ATTRIBUTE_TRIVIAL_ABI
45
+ Status;
44
46
  #endif
45
47
  ABSL_NAMESPACE_END
46
48
  } // namespace absl
@@ -69,8 +69,8 @@ class IsOkAndHoldsMatcherImpl
69
69
  bool MatchAndExplain(
70
70
  StatusOrType actual_value,
71
71
  ::testing::MatchResultListener* result_listener) const override {
72
- if (!GetStatus(actual_value).ok()) {
73
- *result_listener << "which has status " << GetStatus(actual_value);
72
+ if (!actual_value.ok()) {
73
+ *result_listener << "which has status " << actual_value.status();
74
74
  return false;
75
75
  }
76
76
 
@@ -29,7 +29,8 @@ namespace absl {
29
29
  ABSL_NAMESPACE_BEGIN
30
30
 
31
31
  template <typename T>
32
- class ABSL_MUST_USE_RESULT StatusOr;
32
+ class ABSL_MUST_USE_RESULT
33
+ StatusOr;
33
34
 
34
35
  namespace internal_statusor {
35
36
 
@@ -47,6 +47,10 @@ static_assert(
47
47
  "absl::Status assumes it can use the bottom 2 bits of a StatusRep*.");
48
48
 
49
49
  std::string StatusCodeToString(StatusCode code) {
50
+ return std::string(absl::StatusCodeToStringView(code));
51
+ }
52
+
53
+ absl::string_view StatusCodeToStringView(StatusCode code) {
50
54
  switch (code) {
51
55
  case StatusCode::kOk:
52
56
  return "OK";
@@ -284,6 +284,11 @@ enum class StatusCode : int {
284
284
  // Returns the name for the status code, or "" if it is an unknown value.
285
285
  std::string StatusCodeToString(StatusCode code);
286
286
 
287
+ // StatusCodeToStringView()
288
+ //
289
+ // Same as StatusCodeToString(), but returns a string_view.
290
+ absl::string_view StatusCodeToStringView(StatusCode code);
291
+
287
292
  // operator<<
288
293
  //
289
294
  // Streams StatusCodeToString(code) to `os`.
@@ -20,6 +20,24 @@
20
20
  //
21
21
  // Defines the following utilities:
22
22
  //
23
+ // =================
24
+ // ABSL_EXPECT_OK(s)
25
+ //
26
+ // ABSL_ASSERT_OK(s)
27
+ // =================
28
+ // Convenience macros for `EXPECT_THAT(s, IsOk())`, where `s` is either
29
+ // a `Status` or a `StatusOr<T>`.
30
+ //
31
+ // There are no EXPECT_NOT_OK/ASSERT_NOT_OK macros since they would not
32
+ // provide much value (when they fail, they would just print the OK status
33
+ // which conveys no more information than `EXPECT_FALSE(s.ok())`. You can
34
+ // of course use `EXPECT_THAT(s, Not(IsOk()))` if you prefer _THAT style.
35
+ //
36
+ // If you want to check for particular errors, better alternatives are:
37
+ // EXPECT_THAT(s, StatusIs(expected_error));
38
+ // EXPECT_THAT(s, StatusIs(_, _, HasSubstr("expected error")));
39
+ //
40
+ //
23
41
  // ===============
24
42
  // `IsOkAndHolds(m)`
25
43
  // ===============
@@ -76,6 +94,13 @@
76
94
  namespace absl_testing {
77
95
  ABSL_NAMESPACE_BEGIN
78
96
 
97
+ // Macros for testing the results of functions that return absl::Status or
98
+ // absl::StatusOr<T> (for any type T).
99
+ #define ABSL_EXPECT_OK(expression) \
100
+ EXPECT_THAT(expression, ::absl_testing::IsOk())
101
+ #define ABSL_ASSERT_OK(expression) \
102
+ ASSERT_THAT(expression, ::absl_testing::IsOk())
103
+
79
104
  // Returns a gMock matcher that matches a StatusOr<> whose status is
80
105
  // OK and whose value matches the inner matcher.
81
106
  template <typename InnerMatcherT>
@@ -112,6 +137,29 @@ inline status_internal::IsOkMatcher IsOk() {
112
137
  return status_internal::IsOkMatcher();
113
138
  }
114
139
 
140
+ // By defining ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS, this library also
141
+ // provides unqualified versions of macros
142
+ //
143
+ // Unqualified macro names are likely to collide with those other projects, and
144
+ // so are not recommended. Further, this is true of any transitive dependency
145
+ // of Abseil; it is impossible to be confident no downstream library will not
146
+ // also define these macros itself nor depend on a different library that also
147
+ // defines them.
148
+ //
149
+ // To enable this, define `ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS`
150
+ // preferably at the command line, e.g.
151
+ // `-DABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS` or
152
+ // `local_defines = ["ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS"]` if using
153
+ // Bazel.
154
+ //
155
+ // These are turned on by default inside Google's internal codebase where their
156
+ // use is historically ubiquitous. Other OSS Google projects should use the
157
+ // qualified versions or the `EXPECT_THAT(..., IsOk())` form.
158
+ #ifdef ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS
159
+ #define EXPECT_OK(expression) ABSL_EXPECT_OK(expression)
160
+ #define ASSERT_OK(expression) ABSL_ASSERT_OK(expression)
161
+ #endif // ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS
162
+
115
163
  ABSL_NAMESPACE_END
116
164
  } // namespace absl_testing
117
165
 
@@ -39,6 +39,33 @@ using ::testing::MatchesRegex;
39
39
  using ::testing::Not;
40
40
  using ::testing::Ref;
41
41
 
42
+ TEST(StatusMatcherTest, AbslExpectAssertOk) {
43
+ ABSL_EXPECT_OK(absl::OkStatus());
44
+ ABSL_ASSERT_OK(absl::OkStatus());
45
+ EXPECT_NONFATAL_FAILURE(ABSL_EXPECT_OK(absl::InternalError("Smigla error")),
46
+ "Smigla error");
47
+ EXPECT_FATAL_FAILURE(ABSL_ASSERT_OK(absl::InternalError("Smigla error")),
48
+ "Smigla error");
49
+ }
50
+
51
+ TEST(StatusMatcherTest, ExpectAssertOk) {
52
+ #ifdef ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS
53
+ EXPECT_OK(absl::OkStatus());
54
+ ASSERT_OK(absl::OkStatus());
55
+ EXPECT_NONFATAL_FAILURE(EXPECT_OK(absl::InternalError("Smigla error")),
56
+ "Smigla error");
57
+ EXPECT_FATAL_FAILURE(ASSERT_OK(absl::InternalError("Smigla error")),
58
+ "Smigla error");
59
+ #else
60
+ #ifdef EXPECT_OK
61
+ static_assert(false, "EXPECT_OK defined despite being turned off.");
62
+ #endif // EXPECT_OK
63
+ #ifdef ASSERT_OK
64
+ static_assert(false, "ASSERT_OK defined despite being turned off.");
65
+ #endif // ASSERT_OK
66
+ #endif // ABSL_DEFINE_UNQUALIFIED_STATUS_TESTING_MACROS
67
+ }
68
+
42
69
  TEST(StatusMatcherTest, StatusIsOk) { EXPECT_THAT(absl::OkStatus(), IsOk()); }
43
70
 
44
71
  TEST(StatusMatcherTest, StatusOrIsOk) {
@@ -39,6 +39,7 @@ TEST(StatusCode, InsertionOperator) {
39
39
  std::ostringstream oss;
40
40
  oss << code;
41
41
  EXPECT_EQ(oss.str(), absl::StatusCodeToString(code));
42
+ EXPECT_EQ(oss.str(), absl::StatusCodeToStringView(code));
42
43
  }
43
44
 
44
45
  // This structure holds the details for testing a single error code,
@@ -45,8 +45,8 @@
45
45
  #include <utility>
46
46
 
47
47
  #include "absl/base/attributes.h"
48
- #include "absl/base/nullability.h"
49
48
  #include "absl/base/call_once.h"
49
+ #include "absl/base/nullability.h"
50
50
  #include "absl/meta/type_traits.h"
51
51
  #include "absl/status/internal/statusor_internal.h"
52
52
  #include "absl/status/status.h"