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
@@ -15,6 +15,8 @@
15
15
 
16
16
  #include <errno.h>
17
17
 
18
+ #include <string>
19
+
18
20
  #include "gmock/gmock.h"
19
21
  #include "gtest/gtest.h"
20
22
  #include "absl/log/internal/test_actions.h"
@@ -58,6 +60,7 @@ using ::testing::Truly;
58
60
 
59
61
  TEST(TailCallsModifiesTest, AtLocationFileLine) {
60
62
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
63
+ EXPECT_CALL(test_sink, Send).Times(0);
61
64
 
62
65
  EXPECT_CALL(
63
66
  test_sink,
@@ -77,8 +80,17 @@ TEST(TailCallsModifiesTest, AtLocationFileLine) {
77
80
  << "hello world";
78
81
  }
79
82
 
83
+ TEST(TailCallsModifiesTest, AtLocationFileLineLifetime) {
84
+ // The macro takes care to not use this temporary after its lifetime.
85
+ // The only salient expectation is "no sanitizer diagnostics".
86
+ LOG(INFO).AtLocation(std::string("/my/very/very/very_long_source_file.cc"),
87
+ 777)
88
+ << "hello world";
89
+ }
90
+
80
91
  TEST(TailCallsModifiesTest, NoPrefix) {
81
92
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
93
+ EXPECT_CALL(test_sink, Send).Times(0);
82
94
 
83
95
  EXPECT_CALL(test_sink, Send(AllOf(Prefix(IsFalse()), TextPrefix(IsEmpty()),
84
96
  TextMessageWithPrefix(Eq("hello world")))));
@@ -89,6 +101,7 @@ TEST(TailCallsModifiesTest, NoPrefix) {
89
101
 
90
102
  TEST(TailCallsModifiesTest, NoPrefixNoMessageNoShirtNoShoesNoService) {
91
103
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
104
+ EXPECT_CALL(test_sink, Send).Times(0);
92
105
 
93
106
  EXPECT_CALL(test_sink,
94
107
  Send(AllOf(Prefix(IsFalse()), TextPrefix(IsEmpty()),
@@ -100,6 +113,7 @@ TEST(TailCallsModifiesTest, NoPrefixNoMessageNoShirtNoShoesNoService) {
100
113
 
101
114
  TEST(TailCallsModifiesTest, WithVerbosity) {
102
115
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
116
+ EXPECT_CALL(test_sink, Send).Times(0);
103
117
 
104
118
  EXPECT_CALL(test_sink, Send(Verbosity(Eq(2))));
105
119
 
@@ -109,6 +123,7 @@ TEST(TailCallsModifiesTest, WithVerbosity) {
109
123
 
110
124
  TEST(TailCallsModifiesTest, WithVerbosityNoVerbosity) {
111
125
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
126
+ EXPECT_CALL(test_sink, Send).Times(0);
112
127
 
113
128
  EXPECT_CALL(test_sink,
114
129
  Send(Verbosity(Eq(absl::LogEntry::kNoVerbosityLevel))));
@@ -120,6 +135,7 @@ TEST(TailCallsModifiesTest, WithVerbosityNoVerbosity) {
120
135
 
121
136
  TEST(TailCallsModifiesTest, WithTimestamp) {
122
137
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
138
+ EXPECT_CALL(test_sink, Send).Times(0);
123
139
 
124
140
  EXPECT_CALL(test_sink, Send(Timestamp(Eq(absl::UnixEpoch()))));
125
141
 
@@ -129,6 +145,7 @@ TEST(TailCallsModifiesTest, WithTimestamp) {
129
145
 
130
146
  TEST(TailCallsModifiesTest, WithThreadID) {
131
147
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
148
+ EXPECT_CALL(test_sink, Send).Times(0);
132
149
 
133
150
  EXPECT_CALL(test_sink,
134
151
  Send(AllOf(ThreadID(Eq(absl::LogEntry::tid_t{1234})))));
@@ -147,6 +164,7 @@ TEST(TailCallsModifiesTest, WithMetadataFrom) {
147
164
  } forwarding_sink;
148
165
 
149
166
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
167
+ EXPECT_CALL(test_sink, Send).Times(0);
150
168
 
151
169
  EXPECT_CALL(
152
170
  test_sink,
@@ -175,6 +193,7 @@ TEST(TailCallsModifiesTest, WithMetadataFrom) {
175
193
 
176
194
  TEST(TailCallsModifiesTest, WithPerror) {
177
195
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
196
+ EXPECT_CALL(test_sink, Send).Times(0);
178
197
 
179
198
  EXPECT_CALL(
180
199
  test_sink,
@@ -201,6 +220,7 @@ TEST(ModifierMethodDeathTest, ToSinkOnlyQFatal) {
201
220
  {
202
221
  absl::ScopedMockLog test_sink(
203
222
  absl::MockLogDefault::kDisallowUnexpected);
223
+ EXPECT_CALL(test_sink, Send).Times(0);
204
224
 
205
225
  auto do_log = [&test_sink] {
206
226
  LOG(QFATAL).ToSinkOnly(&test_sink.UseAsLocalSink()) << "hello world";
@@ -44,10 +44,10 @@ ABSL_NAMESPACE_BEGIN
44
44
  // sink instead which writes them to `stderr`.
45
45
  //
46
46
  // Do not call these inside `absl::LogSink::Send`.
47
- inline void AddLogSink(absl::Nonnull<absl::LogSink*> sink) {
47
+ inline void AddLogSink(absl::LogSink* absl_nonnull sink) {
48
48
  log_internal::AddLogSink(sink);
49
49
  }
50
- inline void RemoveLogSink(absl::Nonnull<absl::LogSink*> sink) {
50
+ inline void RemoveLogSink(absl::LogSink* absl_nonnull sink) {
51
51
  log_internal::RemoveLogSink(sink);
52
52
  }
53
53
 
@@ -66,6 +66,7 @@ void WriteToStreamRef(absl::string_view data, std::ostream& os) {
66
66
 
67
67
  TEST(LogStreamerTest, LogInfoStreamer) {
68
68
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
69
+ EXPECT_CALL(test_sink, Send).Times(0);
69
70
 
70
71
  EXPECT_CALL(
71
72
  test_sink,
@@ -87,6 +88,7 @@ TEST(LogStreamerTest, LogInfoStreamer) {
87
88
 
88
89
  TEST(LogStreamerTest, LogWarningStreamer) {
89
90
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
91
+ EXPECT_CALL(test_sink, Send).Times(0);
90
92
 
91
93
  EXPECT_CALL(
92
94
  test_sink,
@@ -109,6 +111,7 @@ TEST(LogStreamerTest, LogWarningStreamer) {
109
111
 
110
112
  TEST(LogStreamerTest, LogErrorStreamer) {
111
113
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
114
+ EXPECT_CALL(test_sink, Send).Times(0);
112
115
 
113
116
  EXPECT_CALL(
114
117
  test_sink,
@@ -133,6 +136,7 @@ TEST(LogStreamerDeathTest, LogFatalStreamer) {
133
136
  EXPECT_EXIT(
134
137
  {
135
138
  absl::ScopedMockLog test_sink;
139
+ EXPECT_CALL(test_sink, Send).Times(0);
136
140
 
137
141
  EXPECT_CALL(test_sink, Send)
138
142
  .Times(AnyNumber())
@@ -164,6 +168,7 @@ TEST(LogStreamerDeathTest, LogFatalStreamer) {
164
168
  #ifdef NDEBUG
165
169
  TEST(LogStreamerTest, LogDebugFatalStreamer) {
166
170
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
171
+ EXPECT_CALL(test_sink, Send).Times(0);
167
172
 
168
173
  EXPECT_CALL(
169
174
  test_sink,
@@ -188,6 +193,7 @@ TEST(LogStreamerDeathTest, LogDebugFatalStreamer) {
188
193
  EXPECT_EXIT(
189
194
  {
190
195
  absl::ScopedMockLog test_sink;
196
+ EXPECT_CALL(test_sink, Send).Times(0);
191
197
 
192
198
  EXPECT_CALL(test_sink, Send)
193
199
  .Times(AnyNumber())
@@ -218,6 +224,7 @@ TEST(LogStreamerDeathTest, LogDebugFatalStreamer) {
218
224
 
219
225
  TEST(LogStreamerTest, LogStreamer) {
220
226
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
227
+ EXPECT_CALL(test_sink, Send).Times(0);
221
228
 
222
229
  EXPECT_CALL(
223
230
  test_sink,
@@ -244,6 +251,7 @@ TEST(LogStreamerDeathTest, LogStreamer) {
244
251
  EXPECT_EXIT(
245
252
  {
246
253
  absl::ScopedMockLog test_sink;
254
+ EXPECT_CALL(test_sink, Send).Times(0);
247
255
 
248
256
  EXPECT_CALL(test_sink, Send)
249
257
  .Times(AnyNumber())
@@ -275,6 +283,7 @@ TEST(LogStreamerDeathTest, LogStreamer) {
275
283
 
276
284
  TEST(LogStreamerTest, PassedByReference) {
277
285
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
286
+ EXPECT_CALL(test_sink, Send).Times(0);
278
287
 
279
288
  EXPECT_CALL(
280
289
  test_sink,
@@ -291,6 +300,7 @@ TEST(LogStreamerTest, PassedByReference) {
291
300
 
292
301
  TEST(LogStreamerTest, StoredAsLocal) {
293
302
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
303
+ EXPECT_CALL(test_sink, Send).Times(0);
294
304
 
295
305
  auto streamer = absl::LogInfoStreamer("path/file.cc", 1234);
296
306
  WriteToStream("foo", &streamer.stream());
@@ -328,6 +338,7 @@ TEST(LogStreamerDeathTest, StoredAsLocal) {
328
338
 
329
339
  TEST(LogStreamerTest, LogsEmptyLine) {
330
340
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
341
+ EXPECT_CALL(test_sink, Send).Times(0);
331
342
 
332
343
  EXPECT_CALL(test_sink, Send(AllOf(SourceFilename(Eq("path/file.cc")),
333
344
  SourceLine(Eq(1234)), TextMessage(Eq("")),
@@ -345,8 +356,7 @@ TEST(LogStreamerDeathTest, LogsEmptyLine) {
345
356
  EXPECT_EXIT(
346
357
  {
347
358
  absl::ScopedMockLog test_sink;
348
-
349
- EXPECT_CALL(test_sink, Log)
359
+ EXPECT_CALL(test_sink, Send)
350
360
  .Times(AnyNumber())
351
361
  .WillRepeatedly(DeathTestUnexpectedLogging());
352
362
 
@@ -368,6 +378,7 @@ TEST(LogStreamerDeathTest, LogsEmptyLine) {
368
378
 
369
379
  TEST(LogStreamerTest, MoveConstruction) {
370
380
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
381
+ EXPECT_CALL(test_sink, Send).Times(0);
371
382
 
372
383
  EXPECT_CALL(
373
384
  test_sink,
@@ -389,6 +400,7 @@ TEST(LogStreamerTest, MoveConstruction) {
389
400
 
390
401
  TEST(LogStreamerTest, MoveAssignment) {
391
402
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
403
+ EXPECT_CALL(test_sink, Send).Times(0);
392
404
 
393
405
  testing::InSequence seq;
394
406
  EXPECT_CALL(
@@ -423,6 +435,7 @@ TEST(LogStreamerTest, MoveAssignment) {
423
435
 
424
436
  TEST(LogStreamerTest, CorrectDefaultFlags) {
425
437
  absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
438
+ EXPECT_CALL(test_sink, Send).Times(0);
426
439
 
427
440
  // The `boolalpha` and `showbase` flags should be set by default, to match
428
441
  // `LOG`.
@@ -160,7 +160,13 @@ class ScopedMockLog final {
160
160
  // from the log message text, log message path and log message severity.
161
161
  //
162
162
  // If no expectations are specified for this mock, the default action is to
163
- // forward the call to the `Log` mock.
163
+ // forward the call to the `Log` mock. Tests using `Send` are advised to call
164
+ //
165
+ // `EXPECT_CALL(sink, Send).Times(0);`
166
+ //
167
+ // prior to specifying other expectations to suppress forwarding to `Log`.
168
+ // That way, unexpected calls show up as calls to `Send` with complete data
169
+ // and metadata for easier debugging.
164
170
  MOCK_METHOD(void, Send, (const absl::LogEntry&));
165
171
 
166
172
  // Implements the mock method:
@@ -50,6 +50,7 @@ TEST(StreamingFormatTest, LogAsLiteral) {
50
50
  stream << LoggingDefaults << absl::LogAsLiteral(not_a_literal);
51
51
 
52
52
  absl::ScopedMockLog sink;
53
+ EXPECT_CALL(sink, Send).Times(0);
53
54
 
54
55
  EXPECT_CALL(sink, Send(AllOf(TextMessage(MatchesOstream(stream)),
55
56
  TextMessage(Eq("hello world")),
@@ -14,6 +14,8 @@
14
14
  # limitations under the License.
15
15
  #
16
16
 
17
+ load("@rules_cc//cc:cc_library.bzl", "cc_library")
18
+ load("@rules_cc//cc:cc_test.bzl", "cc_test")
17
19
  load(
18
20
  "//absl:copts/configure_copts.bzl",
19
21
  "ABSL_DEFAULT_COPTS",
@@ -14,6 +14,8 @@
14
14
  # limitations under the License.
15
15
  #
16
16
 
17
+ load("@rules_cc//cc:cc_library.bzl", "cc_library")
18
+ load("@rules_cc//cc:cc_test.bzl", "cc_test")
17
19
  load(
18
20
  "//absl:copts/configure_copts.bzl",
19
21
  "ABSL_DEFAULT_COPTS",
@@ -38,6 +38,7 @@
38
38
  #include <cstddef>
39
39
  #include <functional>
40
40
  #include <string>
41
+ #include <string_view>
41
42
  #include <type_traits>
42
43
  #include <vector>
43
44
 
@@ -48,10 +49,6 @@
48
49
  #include <span> // NOLINT(build/c++20)
49
50
  #endif
50
51
 
51
- #ifdef ABSL_HAVE_STD_STRING_VIEW
52
- #include <string_view>
53
- #endif
54
-
55
52
  // Defines the default alignment. `__STDCPP_DEFAULT_NEW_ALIGNMENT__` is a C++17
56
53
  // feature.
57
54
  #if defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
@@ -97,22 +94,6 @@ struct is_detected_impl<typename VoidTImpl<Op<Args...>>::type, Op, Args...> {
97
94
  template <template <class...> class Op, class... Args>
98
95
  struct is_detected : is_detected_impl<void, Op, Args...>::type {};
99
96
 
100
- template <class Enabler, class To, template <class...> class Op, class... Args>
101
- struct is_detected_convertible_impl {
102
- using type = std::false_type;
103
- };
104
-
105
- template <class To, template <class...> class Op, class... Args>
106
- struct is_detected_convertible_impl<
107
- typename std::enable_if<std::is_convertible<Op<Args...>, To>::value>::type,
108
- To, Op, Args...> {
109
- using type = std::true_type;
110
- };
111
-
112
- template <class To, template <class...> class Op, class... Args>
113
- struct is_detected_convertible
114
- : is_detected_convertible_impl<void, To, Op, Args...>::type {};
115
-
116
97
  } // namespace type_traits_internal
117
98
 
118
99
  // void_t()
@@ -121,96 +102,32 @@ struct is_detected_convertible
121
102
  // metafunction allows you to create a general case that maps to `void` while
122
103
  // allowing specializations that map to specific types.
123
104
  //
124
- // This metafunction is designed to be a drop-in replacement for the C++17
125
- // `std::void_t` metafunction.
126
- //
127
- // NOTE: `absl::void_t` does not use the standard-specified implementation so
128
- // that it can remain compatible with gcc < 5.1. This can introduce slightly
129
- // different behavior, such as when ordering partial specializations.
105
+ // This metafunction is not 100% compatible with the C++17 `std::void_t`
106
+ // metafunction. It has slightly different behavior, such as when ordering
107
+ // partial specializations. It is recommended to use `std::void_t` instead.
130
108
  template <typename... Ts>
131
109
  using void_t = typename type_traits_internal::VoidTImpl<Ts...>::type;
132
110
 
133
- // conjunction
134
- //
135
- // Performs a compile-time logical AND operation on the passed types (which
136
- // must have `::value` members convertible to `bool`. Short-circuits if it
137
- // encounters any `false` members (and does not compare the `::value` members
138
- // of any remaining arguments).
139
- //
140
- // This metafunction is designed to be a drop-in replacement for the C++17
141
- // `std::conjunction` metafunction.
142
- template <typename... Ts>
143
- struct conjunction : std::true_type {};
144
-
145
- template <typename T, typename... Ts>
146
- struct conjunction<T, Ts...>
147
- : std::conditional<T::value, conjunction<Ts...>, T>::type {};
148
-
149
- template <typename T>
150
- struct conjunction<T> : T {};
151
-
152
- // disjunction
153
- //
154
- // Performs a compile-time logical OR operation on the passed types (which
155
- // must have `::value` members convertible to `bool`. Short-circuits if it
156
- // encounters any `true` members (and does not compare the `::value` members
157
- // of any remaining arguments).
158
- //
159
- // This metafunction is designed to be a drop-in replacement for the C++17
160
- // `std::disjunction` metafunction.
161
- template <typename... Ts>
162
- struct disjunction : std::false_type {};
163
-
164
- template <typename T, typename... Ts>
165
- struct disjunction<T, Ts...>
166
- : std::conditional<T::value, T, disjunction<Ts...>>::type {};
167
-
168
- template <typename T>
169
- struct disjunction<T> : T {};
170
-
171
- // negation
172
- //
173
- // Performs a compile-time logical NOT operation on the passed type (which
174
- // must have `::value` members convertible to `bool`.
175
- //
176
- // This metafunction is designed to be a drop-in replacement for the C++17
177
- // `std::negation` metafunction.
178
- template <typename T>
179
- struct negation : std::integral_constant<bool, !T::value> {};
180
-
181
- // is_function()
182
- //
183
- // Determines whether the passed type `T` is a function type.
184
- //
185
- // This metafunction is designed to be a drop-in replacement for the C++11
186
- // `std::is_function()` metafunction for platforms that have incomplete C++11
187
- // support (such as libstdc++ 4.x).
188
- //
189
- // This metafunction works because appending `const` to a type does nothing to
190
- // function types and reference types (and forms a const-qualified type
191
- // otherwise).
192
- template <typename T>
193
- struct is_function
194
- : std::integral_constant<
195
- bool, !(std::is_reference<T>::value ||
196
- std::is_const<typename std::add_const<T>::type>::value)> {};
197
-
198
- // is_copy_assignable()
199
- // is_move_assignable()
200
- // is_trivially_destructible()
201
- // is_trivially_default_constructible()
202
- // is_trivially_move_constructible()
203
- // is_trivially_copy_constructible()
204
- // is_trivially_move_assignable()
205
- // is_trivially_copy_assignable()
206
- //
207
111
  // Historical note: Abseil once provided implementations of these type traits
208
112
  // for platforms that lacked full support. New code should prefer to use the
209
113
  // std variants.
210
114
  //
211
115
  // See the documentation for the STL <type_traits> header for more information:
212
116
  // https://en.cppreference.com/w/cpp/header/type_traits
117
+ using std::add_const_t;
118
+ using std::add_cv_t;
119
+ using std::add_lvalue_reference_t;
120
+ using std::add_pointer_t;
121
+ using std::add_rvalue_reference_t;
122
+ using std::add_volatile_t;
123
+ using std::common_type_t;
124
+ using std::conditional_t;
125
+ using std::conjunction;
126
+ using std::decay_t;
127
+ using std::enable_if_t;
128
+ using std::disjunction;
213
129
  using std::is_copy_assignable;
130
+ using std::is_function;
214
131
  using std::is_move_assignable;
215
132
  using std::is_trivially_copy_assignable;
216
133
  using std::is_trivially_copy_constructible;
@@ -218,6 +135,17 @@ using std::is_trivially_default_constructible;
218
135
  using std::is_trivially_destructible;
219
136
  using std::is_trivially_move_assignable;
220
137
  using std::is_trivially_move_constructible;
138
+ using std::make_signed_t;
139
+ using std::make_unsigned_t;
140
+ using std::negation;
141
+ using std::remove_all_extents_t;
142
+ using std::remove_const_t;
143
+ using std::remove_cv_t;
144
+ using std::remove_extent_t;
145
+ using std::remove_pointer_t;
146
+ using std::remove_reference_t;
147
+ using std::remove_volatile_t;
148
+ using std::underlying_type_t;
221
149
 
222
150
  #if defined(__cpp_lib_remove_cvref) && __cpp_lib_remove_cvref >= 201711L
223
151
  template <typename T>
@@ -240,70 +168,6 @@ template <typename T>
240
168
  using remove_cvref_t = typename remove_cvref<T>::type;
241
169
  #endif
242
170
 
243
- // -----------------------------------------------------------------------------
244
- // C++14 "_t" trait aliases
245
- // -----------------------------------------------------------------------------
246
-
247
- template <typename T>
248
- using remove_cv_t = typename std::remove_cv<T>::type;
249
-
250
- template <typename T>
251
- using remove_const_t = typename std::remove_const<T>::type;
252
-
253
- template <typename T>
254
- using remove_volatile_t = typename std::remove_volatile<T>::type;
255
-
256
- template <typename T>
257
- using add_cv_t = typename std::add_cv<T>::type;
258
-
259
- template <typename T>
260
- using add_const_t = typename std::add_const<T>::type;
261
-
262
- template <typename T>
263
- using add_volatile_t = typename std::add_volatile<T>::type;
264
-
265
- template <typename T>
266
- using remove_reference_t = typename std::remove_reference<T>::type;
267
-
268
- template <typename T>
269
- using add_lvalue_reference_t = typename std::add_lvalue_reference<T>::type;
270
-
271
- template <typename T>
272
- using add_rvalue_reference_t = typename std::add_rvalue_reference<T>::type;
273
-
274
- template <typename T>
275
- using remove_pointer_t = typename std::remove_pointer<T>::type;
276
-
277
- template <typename T>
278
- using add_pointer_t = typename std::add_pointer<T>::type;
279
-
280
- template <typename T>
281
- using make_signed_t = typename std::make_signed<T>::type;
282
-
283
- template <typename T>
284
- using make_unsigned_t = typename std::make_unsigned<T>::type;
285
-
286
- template <typename T>
287
- using remove_extent_t = typename std::remove_extent<T>::type;
288
-
289
- template <typename T>
290
- using remove_all_extents_t = typename std::remove_all_extents<T>::type;
291
-
292
- template <typename T>
293
- using decay_t = typename std::decay<T>::type;
294
-
295
- template <bool B, typename T = void>
296
- using enable_if_t = typename std::enable_if<B, T>::type;
297
-
298
- template <bool B, typename T, typename F>
299
- using conditional_t = typename std::conditional<B, T, F>::type;
300
-
301
- template <typename... T>
302
- using common_type_t = typename std::common_type<T...>::type;
303
-
304
- template <typename T>
305
- using underlying_type_t = typename std::underlying_type<T>::type;
306
-
307
171
  namespace type_traits_internal {
308
172
 
309
173
  #if (defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703L) || \
@@ -460,11 +324,17 @@ using swap_internal::Swap;
460
324
 
461
325
  // absl::is_trivially_relocatable<T>
462
326
  //
327
+ // https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2786r11.html
328
+ //
463
329
  // Detects whether a type is known to be "trivially relocatable" -- meaning it
464
330
  // can be relocated from one place to another as if by memcpy/memmove.
465
331
  // This implies that its object representation doesn't depend on its address,
466
332
  // and also none of its special member functions do anything strange.
467
333
  //
334
+ // Note that when relocating the caller code should ensure that if the object is
335
+ // polymorphic, the dynamic type is of the most derived type. Padding bytes
336
+ // should not be copied.
337
+ //
468
338
  // This trait is conservative. If it's true then the type is definitely
469
339
  // trivially relocatable, but if it's false then the type may or may not be. For
470
340
  // example, std::vector<int> is trivially relocatable on every known STL
@@ -482,11 +352,7 @@ using swap_internal::Swap;
482
352
  //
483
353
  // Upstream documentation:
484
354
  //
485
- // https://clang.llvm.org/docs/LanguageExtensions.html#:~:text=__is_trivially_relocatable
486
-
487
- // If the compiler offers a builtin that tells us the answer, we can use that.
488
- // This covers all of the cases in the fallback below, plus types that opt in
489
- // using e.g. [[clang::trivial_abi]].
355
+ // https://clang.llvm.org/docs/LanguageExtensions.html#:~:text=__builtin_is_cpp_trivially_relocatable
490
356
  //
491
357
  // Clang on Windows has the builtin, but it falsely claims types with a
492
358
  // user-provided destructor are trivial (http://b/275003464). So we opt out
@@ -511,15 +377,22 @@ using swap_internal::Swap;
511
377
  //
512
378
  // According to https://github.com/abseil/abseil-cpp/issues/1479, this does not
513
379
  // work with NVCC either.
514
- #if ABSL_HAVE_BUILTIN(__is_trivially_relocatable) && \
515
- (defined(__cpp_impl_trivially_relocatable) || \
516
- (!defined(__clang__) && !defined(__APPLE__) && !defined(__NVCC__)))
380
+ #if ABSL_HAVE_BUILTIN(__builtin_is_cpp_trivially_relocatable)
381
+ // https://github.com/llvm/llvm-project/pull/127636#pullrequestreview-2637005293
382
+ // In the current implementation, __builtin_is_cpp_trivially_relocatable will
383
+ // only return true for types that are trivially relocatable according to the
384
+ // standard. Notably, this means that marking a type [[clang::trivial_abi]] aka
385
+ // ABSL_HAVE_ATTRIBUTE_TRIVIAL_ABI will have no effect on this trait.
517
386
  template <class T>
518
387
  struct is_trivially_relocatable
519
- : std::integral_constant<bool, __is_trivially_relocatable(T)> {};
388
+ : std::integral_constant<bool, __builtin_is_cpp_trivially_relocatable(T)> {
389
+ };
520
390
  #elif ABSL_HAVE_BUILTIN(__is_trivially_relocatable) && defined(__clang__) && \
521
391
  !(defined(_WIN32) || defined(_WIN64)) && !defined(__APPLE__) && \
522
392
  !defined(__NVCC__)
393
+ // https://github.com/llvm/llvm-project/pull/139061
394
+ // __is_trivially_relocatable is deprecated.
395
+ // TODO(b/325479096): Remove this case.
523
396
  template <class T>
524
397
  struct is_trivially_relocatable
525
398
  : std::integral_constant<
@@ -640,10 +513,8 @@ template <typename T>
640
513
  struct IsView : std::integral_constant<bool, std::is_pointer<T>::value ||
641
514
  IsViewImpl<T>::value> {};
642
515
 
643
- #ifdef ABSL_HAVE_STD_STRING_VIEW
644
516
  template <typename Char, typename Traits>
645
517
  struct IsView<std::basic_string_view<Char, Traits>> : std::true_type {};
646
- #endif
647
518
 
648
519
  #ifdef __cpp_lib_span
649
520
  template <typename T>