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.
- package/README.md +2 -0
- package/binding.gyp +3 -2
- package/package.json +5 -5
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +25 -4
- package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +6 -1
- package/vendor/abseil-cpp/CMakeLists.txt +2 -2
- package/vendor/abseil-cpp/MODULE.bazel +2 -2
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +0 -1
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +0 -2
- package/vendor/abseil-cpp/absl/algorithm/container.h +191 -140
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +818 -0
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +44 -5
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +42 -3
- package/vendor/abseil-cpp/absl/base/attributes.h +5 -1
- package/vendor/abseil-cpp/absl/base/call_once_test.cc +10 -10
- package/vendor/abseil-cpp/absl/base/casts.cc +61 -0
- package/vendor/abseil-cpp/absl/base/casts.h +128 -2
- package/vendor/abseil-cpp/absl/base/casts_test.cc +151 -0
- package/vendor/abseil-cpp/absl/base/config.h +13 -37
- package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +4 -0
- package/vendor/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
- package/vendor/abseil-cpp/absl/base/internal/nullability_traits_test.cc +98 -0
- package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
- package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +13 -7
- package/vendor/abseil-cpp/absl/base/internal/spinlock.h +16 -11
- package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +2 -1
- package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +0 -9
- package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +0 -6
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -1
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
- package/vendor/abseil-cpp/absl/base/macros.h +40 -17
- package/vendor/abseil-cpp/absl/base/nullability.h +1 -1
- package/vendor/abseil-cpp/absl/base/optimization.h +1 -3
- package/vendor/abseil-cpp/absl/base/options.h +1 -27
- package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +5 -8
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +4 -0
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +195 -2
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +136 -2
- package/vendor/abseil-cpp/absl/container/btree_map.h +56 -6
- package/vendor/abseil-cpp/absl/container/btree_set.h +52 -6
- package/vendor/abseil-cpp/absl/container/btree_test.cc +107 -1
- package/vendor/abseil-cpp/absl/container/chunked_queue.h +755 -0
- package/vendor/abseil-cpp/absl/container/chunked_queue_benchmark.cc +386 -0
- package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +768 -0
- package/vendor/abseil-cpp/absl/container/fixed_array.h +4 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +16 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +1 -2
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +16 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +0 -2
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +12 -4
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +21 -0
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +14 -5
- package/vendor/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
- package/vendor/abseil-cpp/absl/container/internal/common.h +51 -0
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +7 -1
- package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +11 -0
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +0 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +1 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +0 -14
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +11 -8
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +3 -4
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +23 -6
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +31 -15
- package/vendor/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +4 -12
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -10
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +149 -23
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +120 -126
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +4 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +8 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +14 -59
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +111 -22
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +53 -112
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +10 -15
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +45 -61
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +53 -112
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +6 -9
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +25 -31
- package/vendor/abseil-cpp/absl/container/linked_hash_map.h +666 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_map_benchmark.cc +140 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_map_test.cc +987 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set.h +527 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set_benchmark.cc +84 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set_test.cc +947 -0
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +17 -6
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +16 -5
- package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +1 -2
- package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +79 -0
- package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +79 -0
- package/vendor/abseil-cpp/absl/copts/copts.py +17 -4
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +67 -13
- package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +31 -0
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +34 -0
- package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +2 -2
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +118 -0
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +71 -0
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +97 -0
- package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
- package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -0
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +2 -1
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +2 -2
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +35 -67
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +3 -0
- package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +24 -1
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +39 -15
- package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
- package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +25 -40
- package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/flags/declare.h +9 -0
- package/vendor/abseil-cpp/absl/flags/flag.h +2 -1
- package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +3 -2
- package/vendor/abseil-cpp/absl/flags/marshalling.cc +1 -16
- package/vendor/abseil-cpp/absl/flags/parse.cc +4 -2
- package/vendor/abseil-cpp/absl/flags/parse_test.cc +1 -1
- package/vendor/abseil-cpp/absl/flags/reflection.cc +4 -3
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +3 -1
- package/vendor/abseil-cpp/absl/functional/function_ref.h +125 -20
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +122 -9
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +13 -2
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +42 -4
- package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +11 -0
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +5 -2
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +184 -53
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +116 -10
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +43 -4
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +35 -1
- package/vendor/abseil-cpp/absl/log/check_test_impl.inc +59 -4
- package/vendor/abseil-cpp/absl/log/die_if_null.cc +3 -1
- package/vendor/abseil-cpp/absl/log/die_if_null.h +24 -3
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +31 -1
- package/vendor/abseil-cpp/absl/log/internal/check_impl.h +2 -1
- package/vendor/abseil-cpp/absl/log/internal/check_op.cc +3 -1
- package/vendor/abseil-cpp/absl/log/internal/check_op.h +44 -18
- package/vendor/abseil-cpp/absl/log/internal/conditions.h +38 -35
- package/vendor/abseil-cpp/absl/log/internal/container.h +312 -0
- package/vendor/abseil-cpp/absl/log/internal/container_test.cc +254 -0
- package/vendor/abseil-cpp/absl/log/internal/log_impl.h +108 -110
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -2
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +5 -1
- package/vendor/abseil-cpp/absl/log/internal/strip.h +30 -31
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +19 -19
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
- package/vendor/abseil-cpp/absl/log/log.h +2 -2
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +51 -0
- package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +46 -0
- package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
- package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc +40 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires.h +67 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires_test.cc +66 -0
- package/vendor/abseil-cpp/absl/meta/type_traits.h +42 -1
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +14 -0
- package/vendor/abseil-cpp/absl/numeric/int128.h +41 -21
- package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
- package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +52 -5
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +18 -7
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +1 -0
- package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +3 -5
- package/vendor/abseil-cpp/absl/random/internal/platform.h +0 -13
- package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +0 -1
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +1 -27
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +17 -0
- package/vendor/abseil-cpp/absl/status/CMakeLists.txt +16 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +4 -2
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +2 -2
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +2 -1
- package/vendor/abseil-cpp/absl/status/status.cc +4 -0
- package/vendor/abseil-cpp/absl/status/status.h +5 -0
- package/vendor/abseil-cpp/absl/status/status_matchers.h +48 -0
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +27 -0
- package/vendor/abseil-cpp/absl/status/status_test.cc +1 -0
- package/vendor/abseil-cpp/absl/status/statusor.h +1 -1
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +101 -21
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +99 -5
- package/vendor/abseil-cpp/absl/strings/ascii.h +9 -4
- package/vendor/abseil-cpp/absl/strings/cord.cc +15 -10
- package/vendor/abseil-cpp/absl/strings/cord.h +1 -1
- package/vendor/abseil-cpp/absl/strings/escaping.cc +126 -94
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc +95 -0
- package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +2 -0
- package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +8 -8
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +24 -18
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +10 -16
- package/vendor/abseil-cpp/absl/strings/internal/escaping.h +9 -7
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer.cc +107 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +423 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +685 -0
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -12
- package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +21 -7
- package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +495 -8
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -15
- package/vendor/abseil-cpp/absl/strings/numbers.cc +71 -8
- package/vendor/abseil-cpp/absl/strings/numbers.h +25 -12
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +70 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +194 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite_test.cc +154 -0
- package/vendor/abseil-cpp/absl/strings/str_cat.cc +96 -91
- package/vendor/abseil-cpp/absl/strings/str_cat.h +17 -12
- package/vendor/abseil-cpp/absl/strings/str_format_test.cc +4 -4
- package/vendor/abseil-cpp/absl/strings/str_split.h +1 -1
- package/vendor/abseil-cpp/absl/strings/str_split_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/string_view.h +8 -718
- package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1 -1265
- package/vendor/abseil-cpp/absl/strings/substitute.cc +24 -24
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +2 -3
- package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout_test.cc +15 -5
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2 -1
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +47 -23
- package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/time/civil_time_test.cc +58 -103
- package/vendor/abseil-cpp/absl/time/clock.cc +18 -16
- package/vendor/abseil-cpp/absl/time/clock_test.cc +2 -2
- package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +144 -0
- package/vendor/abseil-cpp/absl/time/duration_test.cc +26 -29
- package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +7 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +4 -2
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +186 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +9 -9
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +12 -12
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +47 -47
- package/vendor/abseil-cpp/absl/time/time.cc +4 -4
- package/vendor/abseil-cpp/absl/time/time.h +10 -10
- package/vendor/abseil-cpp/absl/time/time_test.cc +1 -0
- package/vendor/abseil-cpp/absl/types/compare.h +62 -61
- package/vendor/abseil-cpp/absl/types/compare_test.cc +3 -3
- package/vendor/abseil-cpp/absl/types/internal/span.h +1 -0
- package/vendor/abseil-cpp/absl/types/optional.h +2 -2
- package/vendor/abseil-cpp/absl/types/span.h +10 -2
- package/vendor/abseil-cpp/absl/utility/utility.h +13 -0
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +0 -1
- package/vendor/abseil-cpp/ci/cmake_common.sh +1 -1
- package/vendor/abseil-cpp/ci/cmake_install_test.sh +6 -0
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +2 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +6 -0
- package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +6 -0
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +3 -2
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +5 -0
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -0
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -0
- package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +6 -1
- package/vendor/abseil-cpp/absl/base/internal/identity.h +0 -39
- package/vendor/abseil-cpp/absl/strings/string_view.cc +0 -257
- package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +0 -380
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
#include "gtest/gtest.h"
|
|
28
28
|
#include "absl/base/attributes.h"
|
|
29
29
|
#include "absl/base/config.h"
|
|
30
|
+
#include "absl/base/internal/errno_saver.h"
|
|
30
31
|
#include "absl/base/optimization.h"
|
|
31
32
|
#include "absl/types/span.h"
|
|
32
33
|
|
|
@@ -93,15 +94,23 @@ TEST(StackTrace, HugeFrame) {
|
|
|
93
94
|
// This is a separate function to avoid inlining.
|
|
94
95
|
ABSL_ATTRIBUTE_NOINLINE static void FixupNoFixupEquivalenceNoInline() {
|
|
95
96
|
#if !ABSL_HAVE_ATTRIBUTE_WEAK
|
|
96
|
-
|
|
97
|
-
#
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
#
|
|
101
|
-
#if defined(_WIN32)
|
|
97
|
+
const char* kSkipReason = "Need weak symbol support";
|
|
98
|
+
#elif defined(__riscv)
|
|
99
|
+
const char* kSkipReason =
|
|
100
|
+
"Skipping test on RISC-V due to pre-existing failure";
|
|
101
|
+
#elif defined(_WIN32)
|
|
102
102
|
// TODO(b/434184677): Add support for fixups on Windows if needed
|
|
103
|
-
|
|
103
|
+
const char* kSkipReason =
|
|
104
|
+
"Skipping test on Windows due to lack of support for fixups";
|
|
105
|
+
#else
|
|
106
|
+
const char* kSkipReason = nullptr;
|
|
104
107
|
#endif
|
|
108
|
+
|
|
109
|
+
// This conditional is to avoid an unreachable code warning.
|
|
110
|
+
if (kSkipReason != nullptr) {
|
|
111
|
+
GTEST_SKIP() << kSkipReason;
|
|
112
|
+
}
|
|
113
|
+
|
|
105
114
|
bool can_rely_on_frame_pointers = false;
|
|
106
115
|
if (!can_rely_on_frame_pointers) {
|
|
107
116
|
GTEST_SKIP() << "Frame pointers are required, but not guaranteed in OSS";
|
|
@@ -232,13 +241,20 @@ TEST(StackTrace, FixupNoFixupEquivalence) { FixupNoFixupEquivalenceNoInline(); }
|
|
|
232
241
|
|
|
233
242
|
TEST(StackTrace, FixupLowStackUsage) {
|
|
234
243
|
#if !ABSL_HAVE_ATTRIBUTE_WEAK
|
|
235
|
-
|
|
236
|
-
#
|
|
237
|
-
#if defined(_WIN32)
|
|
244
|
+
const char* kSkipReason = "Skipping test on MSVC due to weak symbols";
|
|
245
|
+
#elif defined(_WIN32)
|
|
238
246
|
// TODO(b/434184677): Add support for fixups on Windows if needed
|
|
239
|
-
|
|
247
|
+
const char* kSkipReason =
|
|
248
|
+
"Skipping test on Windows due to lack of support for fixups";
|
|
249
|
+
#else
|
|
250
|
+
const char* kSkipReason = nullptr;
|
|
240
251
|
#endif
|
|
241
252
|
|
|
253
|
+
// This conditional is to avoid an unreachable code warning.
|
|
254
|
+
if (kSkipReason != nullptr) {
|
|
255
|
+
GTEST_SKIP() << kSkipReason;
|
|
256
|
+
}
|
|
257
|
+
|
|
242
258
|
const Cleanup restore_state([enable_fixup = g_enable_fixup,
|
|
243
259
|
fixup_calls = g_fixup_calls,
|
|
244
260
|
should_fixup_calls = g_should_fixup_calls]() {
|
|
@@ -275,13 +291,20 @@ TEST(StackTrace, FixupLowStackUsage) {
|
|
|
275
291
|
|
|
276
292
|
TEST(StackTrace, CustomUnwinderPerformsFixup) {
|
|
277
293
|
#if !ABSL_HAVE_ATTRIBUTE_WEAK
|
|
278
|
-
|
|
279
|
-
#
|
|
280
|
-
#if defined(_WIN32)
|
|
294
|
+
const char* kSkipReason = "Need weak symbol support";
|
|
295
|
+
#elif defined(_WIN32)
|
|
281
296
|
// TODO(b/434184677): Add support for fixups on Windows if needed
|
|
282
|
-
|
|
297
|
+
const char* kSkipReason =
|
|
298
|
+
"Skipping test on Windows due to lack of support for fixups";
|
|
299
|
+
#else
|
|
300
|
+
const char* kSkipReason = nullptr;
|
|
283
301
|
#endif
|
|
284
302
|
|
|
303
|
+
// This conditional is to avoid an unreachable code warning.
|
|
304
|
+
if (kSkipReason != nullptr) {
|
|
305
|
+
GTEST_SKIP() << kSkipReason;
|
|
306
|
+
}
|
|
307
|
+
|
|
285
308
|
constexpr int kSkip = 1; // Skip our own frame, whose return PCs won't match
|
|
286
309
|
constexpr auto kStackCount = 1;
|
|
287
310
|
|
|
@@ -414,6 +437,7 @@ const void* g_return_address = nullptr;
|
|
|
414
437
|
bool g_sigusr2_raised = false;
|
|
415
438
|
|
|
416
439
|
void SigUsr2Handler(int, siginfo_t*, void* uc) {
|
|
440
|
+
absl::base_internal::ErrnoSaver errno_saver;
|
|
417
441
|
// Many platforms don't support this by default.
|
|
418
442
|
bool support_is_expected = false;
|
|
419
443
|
constexpr int kMaxStackDepth = 64;
|
|
@@ -26,33 +26,20 @@
|
|
|
26
26
|
|
|
27
27
|
extern "C" {
|
|
28
28
|
const char* emscripten_pc_get_function(const void* pc);
|
|
29
|
+
void* emscripten_stack_snapshot();
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
// clang-format off
|
|
32
|
-
EM_JS(bool, HaveOffsetConverter, (),
|
|
33
|
-
{ return typeof wasmOffsetConverter !== 'undefined'; });
|
|
34
|
-
// clang-format on
|
|
35
|
-
|
|
36
32
|
namespace absl {
|
|
37
33
|
ABSL_NAMESPACE_BEGIN
|
|
38
34
|
|
|
39
|
-
void InitializeSymbolizer(const char*) {
|
|
40
|
-
if (!HaveOffsetConverter()) {
|
|
41
|
-
ABSL_RAW_LOG(INFO,
|
|
42
|
-
"Symbolization unavailable. Rebuild with -sWASM=1 "
|
|
43
|
-
"and -sUSE_OFFSET_CONVERTER=1.");
|
|
44
|
-
}
|
|
45
|
-
}
|
|
35
|
+
void InitializeSymbolizer(const char*) {}
|
|
46
36
|
|
|
47
37
|
bool Symbolize(const void* pc, char* out, int out_size) {
|
|
48
|
-
// Check if we have the offset converter necessary for pc_get_function.
|
|
49
|
-
// Without it, the program will abort().
|
|
50
|
-
if (!HaveOffsetConverter()) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
38
|
if (pc == nullptr || out_size <= 0) {
|
|
54
39
|
return false;
|
|
55
40
|
}
|
|
41
|
+
// Need to capture a snapshot first.
|
|
42
|
+
emscripten_stack_snapshot();
|
|
56
43
|
const char* func_name = emscripten_pc_get_function(pc);
|
|
57
44
|
if (func_name == nullptr) {
|
|
58
45
|
return false;
|
|
@@ -107,8 +107,6 @@ static ABSL_PER_THREAD_TLS_KEYWORD char
|
|
|
107
107
|
#endif
|
|
108
108
|
|
|
109
109
|
#if !defined(__EMSCRIPTEN__)
|
|
110
|
-
static void *GetPCFromFnPtr(void *ptr) { return ptr; }
|
|
111
|
-
|
|
112
110
|
// Used below to hopefully inhibit some compiler/linker optimizations
|
|
113
111
|
// that may remove kHpageTextPadding, kPadding0, and kPadding1 from
|
|
114
112
|
// the binary.
|
|
@@ -119,12 +117,6 @@ static constexpr size_t kHpageSize = 1 << 21;
|
|
|
119
117
|
const char kHpageTextPadding[kHpageSize * 4] ABSL_ATTRIBUTE_SECTION_VARIABLE(
|
|
120
118
|
.text) = "";
|
|
121
119
|
|
|
122
|
-
#else
|
|
123
|
-
static void *GetPCFromFnPtr(void *ptr) {
|
|
124
|
-
return EM_ASM_PTR(
|
|
125
|
-
{ return wasmOffsetConverter.convert(wasmTable.get($0).name, 0); }, ptr);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
120
|
#endif // !defined(__EMSCRIPTEN__)
|
|
129
121
|
|
|
130
122
|
static char try_symbolize_buffer[4096];
|
|
@@ -174,12 +166,10 @@ void ABSL_ATTRIBUTE_NOINLINE TestWithReturnAddress() {
|
|
|
174
166
|
|
|
175
167
|
TEST(Symbolize, Cached) {
|
|
176
168
|
// Compilers should give us pointers to them.
|
|
177
|
-
EXPECT_STREQ("nonstatic_func",
|
|
178
|
-
TrySymbolize(GetPCFromFnPtr((void *)(&nonstatic_func))));
|
|
169
|
+
EXPECT_STREQ("nonstatic_func", TrySymbolize((void*)(&nonstatic_func)));
|
|
179
170
|
// The name of an internal linkage symbol is not specified; allow either a
|
|
180
171
|
// mangled or an unmangled name here.
|
|
181
|
-
const char
|
|
182
|
-
TrySymbolize(GetPCFromFnPtr((void *)(&static_func)));
|
|
172
|
+
const char* static_func_symbol = TrySymbolize((void*)(&static_func));
|
|
183
173
|
EXPECT_TRUE(strcmp("static_func", static_func_symbol) == 0 ||
|
|
184
174
|
strcmp("static_func()", static_func_symbol) == 0);
|
|
185
175
|
|
|
@@ -189,50 +179,38 @@ TEST(Symbolize, Cached) {
|
|
|
189
179
|
TEST(Symbolize, Truncation) {
|
|
190
180
|
constexpr char kNonStaticFunc[] = "nonstatic_func";
|
|
191
181
|
EXPECT_STREQ("nonstatic_func",
|
|
192
|
-
TrySymbolizeWithLimit(
|
|
182
|
+
TrySymbolizeWithLimit((void*)(&nonstatic_func),
|
|
193
183
|
strlen(kNonStaticFunc) + 1));
|
|
194
184
|
EXPECT_STREQ("nonstatic_...",
|
|
195
|
-
TrySymbolizeWithLimit(
|
|
185
|
+
TrySymbolizeWithLimit((void*)(&nonstatic_func),
|
|
196
186
|
strlen(kNonStaticFunc) + 0));
|
|
197
187
|
EXPECT_STREQ("nonstatic...",
|
|
198
|
-
TrySymbolizeWithLimit(
|
|
188
|
+
TrySymbolizeWithLimit((void*)(&nonstatic_func),
|
|
199
189
|
strlen(kNonStaticFunc) - 1));
|
|
200
|
-
EXPECT_STREQ("n...", TrySymbolizeWithLimit(
|
|
201
|
-
|
|
202
|
-
EXPECT_STREQ("
|
|
203
|
-
|
|
204
|
-
EXPECT_STREQ("
|
|
205
|
-
|
|
206
|
-
EXPECT_STREQ(
|
|
207
|
-
".", TrySymbolizeWithLimit(GetPCFromFnPtr((void *)(&nonstatic_func)), 2));
|
|
208
|
-
EXPECT_STREQ(
|
|
209
|
-
"", TrySymbolizeWithLimit(GetPCFromFnPtr((void *)(&nonstatic_func)), 1));
|
|
210
|
-
EXPECT_EQ(nullptr, TrySymbolizeWithLimit(
|
|
211
|
-
GetPCFromFnPtr((void *)(&nonstatic_func)), 0));
|
|
190
|
+
EXPECT_STREQ("n...", TrySymbolizeWithLimit((void*)(&nonstatic_func), 5));
|
|
191
|
+
EXPECT_STREQ("...", TrySymbolizeWithLimit((void*)(&nonstatic_func), 4));
|
|
192
|
+
EXPECT_STREQ("..", TrySymbolizeWithLimit((void*)(&nonstatic_func), 3));
|
|
193
|
+
EXPECT_STREQ(".", TrySymbolizeWithLimit((void*)(&nonstatic_func), 2));
|
|
194
|
+
EXPECT_STREQ("", TrySymbolizeWithLimit((void*)(&nonstatic_func), 1));
|
|
195
|
+
EXPECT_EQ(nullptr, TrySymbolizeWithLimit((void*)(&nonstatic_func), 0));
|
|
212
196
|
}
|
|
213
197
|
|
|
214
198
|
TEST(Symbolize, SymbolizeWithDemangling) {
|
|
215
199
|
Foo::func(100);
|
|
216
200
|
#ifdef __EMSCRIPTEN__
|
|
217
201
|
// Emscripten's online symbolizer is more precise with arguments.
|
|
218
|
-
EXPECT_STREQ("Foo::func(int)",
|
|
219
|
-
TrySymbolize(GetPCFromFnPtr((void *)(&Foo::func))));
|
|
202
|
+
EXPECT_STREQ("Foo::func(int)", TrySymbolize((void*)(&Foo::func)));
|
|
220
203
|
#else
|
|
221
|
-
EXPECT_STREQ("Foo::func()",
|
|
222
|
-
TrySymbolize(GetPCFromFnPtr((void *)(&Foo::func))));
|
|
204
|
+
EXPECT_STREQ("Foo::func()", TrySymbolize((void*)(&Foo::func)));
|
|
223
205
|
#endif
|
|
224
206
|
}
|
|
225
207
|
|
|
226
208
|
TEST(Symbolize, SymbolizeSplitTextSections) {
|
|
227
|
-
EXPECT_STREQ("unlikely_func()",
|
|
228
|
-
|
|
229
|
-
EXPECT_STREQ("
|
|
230
|
-
EXPECT_STREQ("
|
|
231
|
-
|
|
232
|
-
EXPECT_STREQ("exit_func()",
|
|
233
|
-
TrySymbolize(GetPCFromFnPtr((void *)(&exit_func))));
|
|
234
|
-
EXPECT_STREQ("regular_func()",
|
|
235
|
-
TrySymbolize(GetPCFromFnPtr((void *)(®ular_func))));
|
|
209
|
+
EXPECT_STREQ("unlikely_func()", TrySymbolize((void*)(&unlikely_func)));
|
|
210
|
+
EXPECT_STREQ("hot_func()", TrySymbolize((void*)(&hot_func)));
|
|
211
|
+
EXPECT_STREQ("startup_func()", TrySymbolize((void*)(&startup_func)));
|
|
212
|
+
EXPECT_STREQ("exit_func()", TrySymbolize((void*)(&exit_func)));
|
|
213
|
+
EXPECT_STREQ("regular_func()", TrySymbolize((void*)(®ular_func)));
|
|
236
214
|
}
|
|
237
215
|
|
|
238
216
|
// Tests that verify that Symbolize stack footprint is within some limit.
|
|
@@ -630,5 +608,12 @@ int main(int argc, char **argv) {
|
|
|
630
608
|
#endif
|
|
631
609
|
#endif
|
|
632
610
|
|
|
611
|
+
#if !defined(__EMSCRIPTEN__)
|
|
612
|
+
// All of these test cases rely on symbolizing function pointers.
|
|
613
|
+
// On most platforms, function pointers directly map to PC.
|
|
614
|
+
// In WebAssembly, function pointers are indices into the function table
|
|
615
|
+
// and there is no longer a mapping from function index back into the
|
|
616
|
+
// file offset for symbolization.
|
|
633
617
|
return RUN_ALL_TESTS();
|
|
618
|
+
#endif // !defined(__EMSCRIPTEN__)
|
|
634
619
|
}
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
// See "Retrieving Symbol Information by Address":
|
|
16
16
|
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms680578(v=vs.85).aspx
|
|
17
17
|
|
|
18
|
-
#include <ntstatus.h>
|
|
19
18
|
#include <windows.h>
|
|
20
19
|
#include <winternl.h>
|
|
21
20
|
|
|
@@ -58,10 +57,9 @@ void InitializeSymbolizer(const char*) {
|
|
|
58
57
|
// NTSTATUS (0xC0000004), which can happen when a module load occurs during
|
|
59
58
|
// the SymInitialize call. In this case, we should try calling SymInitialize
|
|
60
59
|
// again.
|
|
60
|
+
constexpr DWORD kStatusInfoLengthMismatch = DWORD{0xC0000004};
|
|
61
61
|
syminitialize_error = GetLastError();
|
|
62
|
-
|
|
63
|
-
if (syminitialize_error !=
|
|
64
|
-
static_cast<DWORD>(STATUS_INFO_LENGTH_MISMATCH)) {
|
|
62
|
+
if (syminitialize_error != kStatusInfoLengthMismatch) {
|
|
65
63
|
break;
|
|
66
64
|
}
|
|
67
65
|
}
|
|
@@ -59,10 +59,19 @@ ABSL_NAMESPACE_END
|
|
|
59
59
|
|
|
60
60
|
// Internal implementation of ABSL_DECLARE_FLAG to allow macro expansion of its
|
|
61
61
|
// arguments. Clients must use ABSL_DECLARE_FLAG instead.
|
|
62
|
+
//
|
|
63
|
+
// The non-MSVC implementation declares the flag twice. This is to allow
|
|
64
|
+
// applying attributes to the second declaration. However, this causes a
|
|
65
|
+
// compile error (C4273) in MSVC if a `__declspec` is prepended to the macro.
|
|
66
|
+
#if defined(_MSC_VER)
|
|
67
|
+
#define ABSL_DECLARE_FLAG_INTERNAL(type, name) \
|
|
68
|
+
extern absl::Flag<type> FLAGS_##name
|
|
69
|
+
#else
|
|
62
70
|
#define ABSL_DECLARE_FLAG_INTERNAL(type, name) \
|
|
63
71
|
extern absl::Flag<type> FLAGS_##name; \
|
|
64
72
|
namespace absl /* block flags in namespaces */ {} \
|
|
65
73
|
/* second redeclaration is to allow applying attributes */ \
|
|
66
74
|
extern absl::Flag<type> FLAGS_##name
|
|
75
|
+
#endif // _MSC_VER
|
|
67
76
|
|
|
68
77
|
#endif // ABSL_FLAGS_DECLARE_H_
|
|
@@ -241,7 +241,8 @@ ABSL_NAMESPACE_END
|
|
|
241
241
|
/* default value argument. That keeps temporaries alive */ \
|
|
242
242
|
/* long enough for NonConst to work correctly. */ \
|
|
243
243
|
static constexpr absl::string_view Value( \
|
|
244
|
-
absl::string_view absl_flag_help =
|
|
244
|
+
absl::string_view absl_flag_help ABSL_ATTRIBUTE_LIFETIME_BOUND = \
|
|
245
|
+
ABSL_FLAG_IMPL_FLAGHELP(txt)) { \
|
|
245
246
|
return absl_flag_help; \
|
|
246
247
|
} \
|
|
247
248
|
static std::string NonConst() { return std::string(Value()); } \
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
#include <memory>
|
|
27
27
|
#include <string>
|
|
28
28
|
#include <typeinfo>
|
|
29
|
+
#include <utility>
|
|
29
30
|
#include <vector>
|
|
30
31
|
|
|
31
32
|
#include "absl/base/attributes.h"
|
|
@@ -139,8 +140,8 @@ class FlagState : public flags_internal::FlagStateInterface {
|
|
|
139
140
|
friend class FlagImpl;
|
|
140
141
|
|
|
141
142
|
// Restores the flag to the saved state.
|
|
142
|
-
void Restore()
|
|
143
|
-
if (!flag_impl_.RestoreState(*this)) return;
|
|
143
|
+
void Restore() && override {
|
|
144
|
+
if (!std::move(flag_impl_).RestoreState(*this)) return;
|
|
144
145
|
|
|
145
146
|
ABSL_INTERNAL_LOG(INFO,
|
|
146
147
|
absl::StrCat("Restore saved value of ", flag_impl_.Name(),
|
|
@@ -45,22 +45,7 @@ namespace flags_internal {
|
|
|
45
45
|
// AbslParseFlag specializations for boolean type.
|
|
46
46
|
|
|
47
47
|
bool AbslParseFlag(absl::string_view text, bool* dst, std::string*) {
|
|
48
|
-
|
|
49
|
-
const char* kFalse[] = {"0", "f", "false", "n", "no"};
|
|
50
|
-
static_assert(sizeof(kTrue) == sizeof(kFalse), "true_false_equal");
|
|
51
|
-
|
|
52
|
-
text = absl::StripAsciiWhitespace(text);
|
|
53
|
-
|
|
54
|
-
for (size_t i = 0; i < ABSL_ARRAYSIZE(kTrue); ++i) {
|
|
55
|
-
if (absl::EqualsIgnoreCase(text, kTrue[i])) {
|
|
56
|
-
*dst = true;
|
|
57
|
-
return true;
|
|
58
|
-
} else if (absl::EqualsIgnoreCase(text, kFalse[i])) {
|
|
59
|
-
*dst = false;
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return false; // didn't match a legal input
|
|
48
|
+
return SimpleAtob(absl::StripAsciiWhitespace(text), dst);
|
|
64
49
|
}
|
|
65
50
|
|
|
66
51
|
// --------------------------------------------------------------------
|
|
@@ -206,8 +206,10 @@ bool ArgsList::ReadFromFlagfile(const std::string& flag_file_name) {
|
|
|
206
206
|
|
|
207
207
|
std::string line;
|
|
208
208
|
bool success = true;
|
|
209
|
+
int line_number = 0;
|
|
209
210
|
|
|
210
211
|
while (std::getline(flag_file, line)) {
|
|
212
|
+
line_number++;
|
|
211
213
|
absl::string_view stripped = absl::StripLeadingAsciiWhitespace(line);
|
|
212
214
|
|
|
213
215
|
if (stripped.empty() || stripped[0] == '#') {
|
|
@@ -229,8 +231,8 @@ bool ArgsList::ReadFromFlagfile(const std::string& flag_file_name) {
|
|
|
229
231
|
}
|
|
230
232
|
|
|
231
233
|
flags_internal::ReportUsageError(
|
|
232
|
-
absl::StrCat("Unexpected line
|
|
233
|
-
|
|
234
|
+
absl::StrCat("Unexpected line ", line_number, " in the flagfile ",
|
|
235
|
+
flag_file_name),
|
|
234
236
|
true);
|
|
235
237
|
|
|
236
238
|
success = false;
|
|
@@ -827,7 +827,7 @@ TEST_F(ParseDeathTest, TestInvalidFlagfiles) {
|
|
|
827
827
|
flagfile_flag),
|
|
828
828
|
};
|
|
829
829
|
EXPECT_DEATH_IF_SUPPORTED(InvokeParse(in_args5),
|
|
830
|
-
"Unexpected line in the flagfile
|
|
830
|
+
"Unexpected line 2 in the flagfile .*");
|
|
831
831
|
}
|
|
832
832
|
|
|
833
833
|
// --------------------------------------------------------------------
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
#include <atomic>
|
|
21
21
|
#include <string>
|
|
22
|
+
#include <utility>
|
|
22
23
|
|
|
23
24
|
#include "absl/base/config.h"
|
|
24
25
|
#include "absl/base/no_destructor.h"
|
|
@@ -320,9 +321,9 @@ class FlagSaverImpl {
|
|
|
320
321
|
}
|
|
321
322
|
|
|
322
323
|
// Restores the saved flag states into the flag registry.
|
|
323
|
-
void RestoreToRegistry() {
|
|
324
|
+
void RestoreToRegistry() && {
|
|
324
325
|
for (const auto& flag_state : backup_registry_) {
|
|
325
|
-
flag_state
|
|
326
|
+
std::move(*flag_state).Restore();
|
|
326
327
|
}
|
|
327
328
|
}
|
|
328
329
|
|
|
@@ -340,7 +341,7 @@ FlagSaver::FlagSaver() : impl_(new flags_internal::FlagSaverImpl) {
|
|
|
340
341
|
FlagSaver::~FlagSaver() {
|
|
341
342
|
if (!impl_) return;
|
|
342
343
|
|
|
343
|
-
impl_
|
|
344
|
+
std::move(*impl_).RestoreToRegistry();
|
|
344
345
|
delete impl_;
|
|
345
346
|
}
|
|
346
347
|
|
|
@@ -104,8 +104,10 @@ cc_library(
|
|
|
104
104
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
105
105
|
deps = [
|
|
106
106
|
":any_invocable",
|
|
107
|
+
"//absl/base:config",
|
|
107
108
|
"//absl/base:core_headers",
|
|
108
109
|
"//absl/meta:type_traits",
|
|
110
|
+
"//absl/utility",
|
|
109
111
|
],
|
|
110
112
|
)
|
|
111
113
|
|
|
@@ -117,8 +119,10 @@ cc_test(
|
|
|
117
119
|
deps = [
|
|
118
120
|
":any_invocable",
|
|
119
121
|
":function_ref",
|
|
122
|
+
"//absl/base:config",
|
|
120
123
|
"//absl/container:test_instance_tracker",
|
|
121
124
|
"//absl/memory",
|
|
125
|
+
"//absl/utility",
|
|
122
126
|
"@googletest//:gtest",
|
|
123
127
|
"@googletest//:gtest_main",
|
|
124
128
|
],
|
|
@@ -87,9 +87,11 @@ absl_cc_library(
|
|
|
87
87
|
COPTS
|
|
88
88
|
${ABSL_DEFAULT_COPTS}
|
|
89
89
|
DEPS
|
|
90
|
+
absl::config
|
|
90
91
|
absl::core_headers
|
|
91
92
|
absl::any_invocable
|
|
92
93
|
absl::meta
|
|
94
|
+
absl::utility
|
|
93
95
|
PUBLIC
|
|
94
96
|
)
|
|
95
97
|
|
|
@@ -101,9 +103,11 @@ absl_cc_test(
|
|
|
101
103
|
COPTS
|
|
102
104
|
${ABSL_TEST_COPTS}
|
|
103
105
|
DEPS
|
|
106
|
+
absl::config
|
|
104
107
|
absl::function_ref
|
|
105
108
|
absl::memory
|
|
106
109
|
absl::test_instance_tracker
|
|
110
|
+
absl::utility
|
|
107
111
|
GTest::gmock_main
|
|
108
112
|
)
|
|
109
113
|
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
#include <type_traits>
|
|
40
40
|
#include <utility>
|
|
41
41
|
|
|
42
|
+
#include "absl/base/attributes.h"
|
|
42
43
|
#include "absl/base/config.h"
|
|
43
44
|
#include "absl/base/nullability.h"
|
|
44
45
|
#include "absl/functional/internal/any_invocable.h"
|
|
@@ -159,7 +160,7 @@ ABSL_NAMESPACE_BEGIN
|
|
|
159
160
|
// AnyInvocable<void()> empty;
|
|
160
161
|
// empty(); // WARNING: Undefined behavior!
|
|
161
162
|
template <class Sig>
|
|
162
|
-
class ABSL_NULLABILITY_COMPATIBLE AnyInvocable
|
|
163
|
+
class ABSL_NULLABILITY_COMPATIBLE ABSL_ATTRIBUTE_OWNER AnyInvocable
|
|
163
164
|
: private internal_any_invocable::Impl<Sig> {
|
|
164
165
|
private:
|
|
165
166
|
static_assert(
|
|
@@ -171,6 +172,7 @@ class ABSL_NULLABILITY_COMPATIBLE AnyInvocable
|
|
|
171
172
|
public:
|
|
172
173
|
// The return type of Sig
|
|
173
174
|
using result_type = typename Impl::result_type;
|
|
175
|
+
using absl_internal_is_view = std::false_type;
|
|
174
176
|
|
|
175
177
|
// Constructors
|
|
176
178
|
|