re2 1.24.0 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -20
- package/README.md +63 -4
- package/binding.gyp +1 -2
- package/lib/addon.cc +9 -5
- package/lib/exec.cc +4 -4
- package/lib/match.cc +4 -4
- package/lib/new.cc +6 -6
- package/lib/pattern.cc +148 -1
- package/lib/replace.cc +5 -4
- package/lib/search.cc +1 -1
- package/lib/set.cc +85 -10
- package/lib/test.cc +1 -1
- package/lib/unicode_properties.h +15840 -0
- package/lib/wrapped_re2.h +40 -4
- package/lib/wrapped_re2_set.h +3 -1
- package/llms-full.txt +497 -0
- package/llms.txt +135 -0
- package/package.json +19 -11
- package/re2.d.ts +2 -0
- package/re2.js +1 -0
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
- package/vendor/abseil-cpp/CMakeLists.txt +3 -3
- package/vendor/abseil-cpp/FAQ.md +130 -79
- package/vendor/abseil-cpp/MODULE.bazel +6 -7
- package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
- package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
- package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
- package/vendor/abseil-cpp/absl/base/casts.h +8 -1
- package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
- package/vendor/abseil-cpp/absl/base/config.h +53 -9
- package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
- package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
- package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
- package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
- package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
- package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
- package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
- package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- package/vendor/abseil-cpp/absl/base/macros.h +36 -20
- package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
- package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
- package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
- package/vendor/abseil-cpp/absl/base/options.h +55 -1
- package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
- package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
- package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
- package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
- package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
- package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
- package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
- package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
- package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
- package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
- package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
- package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
- package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
- package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
- package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
- package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
- package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
- package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
- package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
- package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
- package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
- package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
- package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
- package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
- package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
- package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
- package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
- package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
- package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
- package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
- package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
- package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
- package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
- package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
- package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
- package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
- package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
- package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
- package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
- package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
- package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
- package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
- package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
- package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
- package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
- package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
- package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
- package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
- package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
- package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
- package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
- package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
- package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
- package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
- package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
- package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
- package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
- package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
- package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
- package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
- package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
- package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
- package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
- package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
- package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
- package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
- package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
- package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
- package/vendor/abseil-cpp/absl/status/status.cc +62 -70
- package/vendor/abseil-cpp/absl/status/status.h +249 -23
- package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
- package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
- package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
- package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
- package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
- package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
- package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
- package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
- package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
- package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
- package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
- package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
- package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
- package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
- package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
- package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
- package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
- package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
- package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
- package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
- package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
- package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
- package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
- package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
- package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
- package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
- package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
- package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
- package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
- package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
- package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
- package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
- package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
- package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
- package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
- package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
- package/vendor/abseil-cpp/absl/time/clock.h +3 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
- package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
- package/vendor/abseil-cpp/absl/time/format.cc +3 -10
- package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
- package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
- package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
- package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
- package/vendor/abseil-cpp/absl/types/any.h +26 -4
- package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
- package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
- package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
- package/vendor/abseil-cpp/absl/types/compare.h +4 -4
- package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
- package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
- package/vendor/abseil-cpp/absl/types/optional.h +30 -3
- package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
- package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
- package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
- package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
- package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
- package/vendor/abseil-cpp/absl/types/span.h +19 -23
- package/vendor/abseil-cpp/absl/types/variant.h +75 -18
- package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
- package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
- package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
|
|
54
54
|
#include <cassert>
|
|
55
55
|
#include <cstdint>
|
|
56
|
+
#include <optional>
|
|
56
57
|
#include <ostream>
|
|
57
58
|
#include <string>
|
|
58
59
|
#include <utility>
|
|
@@ -67,6 +68,8 @@
|
|
|
67
68
|
#include "absl/strings/cord.h"
|
|
68
69
|
#include "absl/strings/string_view.h"
|
|
69
70
|
#include "absl/types/optional.h"
|
|
71
|
+
#include "absl/types/source_location.h"
|
|
72
|
+
#include "absl/types/span.h"
|
|
70
73
|
|
|
71
74
|
namespace absl {
|
|
72
75
|
ABSL_NAMESPACE_BEGIN
|
|
@@ -305,6 +308,8 @@ enum class StatusToStringMode : int {
|
|
|
305
308
|
kWithNoExtraData = 0,
|
|
306
309
|
// ToString will contain the payloads.
|
|
307
310
|
kWithPayload = 1 << 0,
|
|
311
|
+
// ToString will contain the source locations.
|
|
312
|
+
kWithSourceLocation = 1 << 1,
|
|
308
313
|
// ToString will include all the extra data this Status has.
|
|
309
314
|
kWithEverything = ~kWithNoExtraData,
|
|
310
315
|
// Default mode used by ToString. Its exact value might change in the future.
|
|
@@ -443,12 +448,28 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI Status final {
|
|
|
443
448
|
Status();
|
|
444
449
|
|
|
445
450
|
// Creates a status in the canonical error space with the specified
|
|
446
|
-
// `absl::StatusCode` and error message. If `code == absl::StatusCode::kOk`,
|
|
451
|
+
// `absl::StatusCode` and error message. If `code == absl::StatusCode::kOk`,
|
|
447
452
|
// `msg` is ignored and an object identical to an OK status is constructed.
|
|
448
453
|
//
|
|
449
|
-
// The `msg` string must be in UTF-8. The implementation may complain (e.g.,
|
|
454
|
+
// The `msg` string must be in UTF-8. The implementation may complain (e.g.,
|
|
450
455
|
// by printing a warning) if it is not.
|
|
451
|
-
|
|
456
|
+
//
|
|
457
|
+
// The `loc` is the SourceLocation of the callsite. It will be stored in the
|
|
458
|
+
// Status iff `code != absl::StatusCode::kOk` and `!msg.empty()`.
|
|
459
|
+
Status(absl::StatusCode code, absl::string_view msg,
|
|
460
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
461
|
+
|
|
462
|
+
// Create a status from a `base_status` and a `loc`. The `loc` will be
|
|
463
|
+
// appended to the location chain of the new status, iff the `base_status` is
|
|
464
|
+
// not ok and has non-empty msg.
|
|
465
|
+
Status(const Status& base_status, absl::SourceLocation loc)
|
|
466
|
+
: Status(base_status) {
|
|
467
|
+
AddSourceLocation(loc);
|
|
468
|
+
}
|
|
469
|
+
Status(Status&& base_status, absl::SourceLocation loc)
|
|
470
|
+
: Status(std::move(base_status)) {
|
|
471
|
+
AddSourceLocation(loc);
|
|
472
|
+
}
|
|
452
473
|
|
|
453
474
|
Status(const Status&);
|
|
454
475
|
Status& operator=(const Status& x);
|
|
@@ -583,7 +604,7 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI Status final {
|
|
|
583
604
|
// Status::GetPayload()
|
|
584
605
|
//
|
|
585
606
|
// Gets the payload of a status given its unique `type_url` key, if present.
|
|
586
|
-
|
|
607
|
+
std::optional<absl::Cord> GetPayload(absl::string_view type_url) const;
|
|
587
608
|
|
|
588
609
|
// Status::SetPayload()
|
|
589
610
|
//
|
|
@@ -613,16 +634,89 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI Status final {
|
|
|
613
634
|
absl::FunctionRef<void(absl::string_view, const absl::Cord&)> visitor)
|
|
614
635
|
const;
|
|
615
636
|
|
|
637
|
+
absl::Span<const absl::SourceLocation> GetSourceLocations() const {
|
|
638
|
+
if (IsInlined(rep_)) return {};
|
|
639
|
+
return RepToPointer(rep_)->GetSourceLocations();
|
|
640
|
+
}
|
|
641
|
+
// Appends the `loc` to the current location chain inside the status, iff the
|
|
642
|
+
// status is non-ok and contains a non-empty message.
|
|
643
|
+
void AddSourceLocation(
|
|
644
|
+
absl::SourceLocation loc = absl::SourceLocation::current()) {
|
|
645
|
+
if (ok()) return;
|
|
646
|
+
rep_ = AddSourceLocationImpl(rep_, loc);
|
|
647
|
+
ABSL_ATTRIBUTE_UNUSED bool okay = ok();
|
|
648
|
+
// This hint tells the optimizer that the status is still not ok after the
|
|
649
|
+
// AddSourceLocation() call. This is useful when passing a known !ok status
|
|
650
|
+
// to StatusOr. StatusOr checks for ok() on its constructor and this assume
|
|
651
|
+
// helps the optimizer remove that check.
|
|
652
|
+
ABSL_ASSUME(!okay);
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
// Status::WithSourceLocation()
|
|
656
|
+
//
|
|
657
|
+
// Returns a copy of the current status, with `loc` appended to its location
|
|
658
|
+
// chain iff the status is non-ok and contains a non-empty message.
|
|
659
|
+
//
|
|
660
|
+
// Example:
|
|
661
|
+
//
|
|
662
|
+
// if (Status status = Foo(); !status.ok()) {
|
|
663
|
+
// return status.WithSourceLocation();
|
|
664
|
+
// }
|
|
665
|
+
Status WithSourceLocation(
|
|
666
|
+
absl::SourceLocation loc = absl::SourceLocation::current()) const& {
|
|
667
|
+
return Status(*this, loc);
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
// Status::WithSourceLocation()
|
|
671
|
+
//
|
|
672
|
+
// Appends the `loc` to the current location chain inside the status iff the
|
|
673
|
+
// status is non-ok and contains a non-empty message, and returns an rvalue
|
|
674
|
+
// reference to `*this`.
|
|
675
|
+
//
|
|
676
|
+
// Example:
|
|
677
|
+
//
|
|
678
|
+
// Status Finalize(...);
|
|
679
|
+
//
|
|
680
|
+
// Status DoSomething(...) {
|
|
681
|
+
// ...
|
|
682
|
+
// return Finalize().WithSourceLocation();
|
|
683
|
+
// }
|
|
684
|
+
ABSL_MUST_USE_RESULT Status&& WithSourceLocation(
|
|
685
|
+
absl::SourceLocation loc = absl::SourceLocation::current()) && {
|
|
686
|
+
AddSourceLocation(loc);
|
|
687
|
+
return std::move(*this);
|
|
688
|
+
}
|
|
689
|
+
|
|
616
690
|
private:
|
|
617
691
|
friend Status CancelledError();
|
|
618
692
|
|
|
693
|
+
#ifndef SWIG
|
|
694
|
+
// Returns a `Status` object which is not `ok()` but
|
|
695
|
+
// `code() == absl::StatusCode::kOk`. This is necessary to be compatible with
|
|
696
|
+
// `Status` objects created with an error code in a custom `ErrorSpace` that
|
|
697
|
+
// is mapped to the canonical code `absl::StatusCode::kOk`.
|
|
698
|
+
static Status MakeNonOkStatusWithOkCode(absl::string_view message);
|
|
699
|
+
|
|
700
|
+
friend class absl::status_internal::StatusPrivateAccessor;
|
|
701
|
+
friend class absl::status_internal::StatusPrivateAccessorForStatusBuilder;
|
|
702
|
+
#endif // !SWIG
|
|
703
|
+
|
|
619
704
|
// Creates a status in the canonical error space with the specified
|
|
620
705
|
// code, and an empty error message.
|
|
621
706
|
explicit Status(absl::StatusCode code);
|
|
622
707
|
|
|
708
|
+
// Delegate factory in header that ensures CodeToInlinedRep is inlined
|
|
709
|
+
// where possible.
|
|
710
|
+
static uintptr_t MakeRep(uintptr_t inlined_rep, absl::string_view msg,
|
|
711
|
+
absl::SourceLocation loc);
|
|
712
|
+
|
|
623
713
|
// Underlying constructor for status from a rep_.
|
|
624
714
|
explicit Status(uintptr_t rep) : rep_(rep) {}
|
|
625
715
|
|
|
716
|
+
// An out-of-line AddSourceLocation that mutates rep directly.
|
|
717
|
+
static uintptr_t AddSourceLocationImpl(uintptr_t rep,
|
|
718
|
+
absl::SourceLocation loc);
|
|
719
|
+
|
|
626
720
|
static void Ref(uintptr_t rep);
|
|
627
721
|
static void Unref(uintptr_t rep);
|
|
628
722
|
|
|
@@ -740,22 +834,44 @@ ABSL_MUST_USE_RESULT bool IsUnknown(const Status& status);
|
|
|
740
834
|
// These convenience functions create an `absl::Status` object with an error
|
|
741
835
|
// code as indicated by the associated function name, using the error message
|
|
742
836
|
// passed in `message`.
|
|
743
|
-
Status AbortedError(absl::string_view message
|
|
744
|
-
|
|
745
|
-
Status
|
|
746
|
-
|
|
747
|
-
Status
|
|
748
|
-
|
|
749
|
-
Status
|
|
750
|
-
|
|
751
|
-
Status
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
Status
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
Status
|
|
758
|
-
|
|
837
|
+
Status AbortedError(absl::string_view message,
|
|
838
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
839
|
+
Status AlreadyExistsError(absl::string_view message,
|
|
840
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
841
|
+
Status CancelledError(absl::string_view message,
|
|
842
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
843
|
+
Status DataLossError(absl::string_view message,
|
|
844
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
845
|
+
Status DeadlineExceededError(
|
|
846
|
+
absl::string_view message,
|
|
847
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
848
|
+
Status FailedPreconditionError(
|
|
849
|
+
absl::string_view message,
|
|
850
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
851
|
+
Status InternalError(absl::string_view message,
|
|
852
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
853
|
+
Status InvalidArgumentError(
|
|
854
|
+
absl::string_view message,
|
|
855
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
856
|
+
Status NotFoundError(absl::string_view message,
|
|
857
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
858
|
+
Status OutOfRangeError(absl::string_view message,
|
|
859
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
860
|
+
Status PermissionDeniedError(
|
|
861
|
+
absl::string_view message,
|
|
862
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
863
|
+
Status ResourceExhaustedError(
|
|
864
|
+
absl::string_view message,
|
|
865
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
866
|
+
Status UnauthenticatedError(
|
|
867
|
+
absl::string_view message,
|
|
868
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
869
|
+
Status UnavailableError(absl::string_view message,
|
|
870
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
871
|
+
Status UnimplementedError(absl::string_view message,
|
|
872
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
873
|
+
Status UnknownError(absl::string_view message,
|
|
874
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
759
875
|
|
|
760
876
|
// ErrnoToStatusCode()
|
|
761
877
|
//
|
|
@@ -768,7 +884,8 @@ absl::StatusCode ErrnoToStatusCode(int error_number);
|
|
|
768
884
|
//
|
|
769
885
|
// Convenience function that creates a `absl::Status` using an `error_number`,
|
|
770
886
|
// which should be an `errno` value.
|
|
771
|
-
Status ErrnoToStatus(int error_number, absl::string_view message
|
|
887
|
+
Status ErrnoToStatus(int error_number, absl::string_view message,
|
|
888
|
+
absl::SourceLocation loc = SourceLocation::current());
|
|
772
889
|
|
|
773
890
|
//------------------------------------------------------------------------------
|
|
774
891
|
// Implementation details follow
|
|
@@ -778,6 +895,10 @@ inline Status::Status() : Status(absl::StatusCode::kOk) {}
|
|
|
778
895
|
|
|
779
896
|
inline Status::Status(absl::StatusCode code) : Status(CodeToInlinedRep(code)) {}
|
|
780
897
|
|
|
898
|
+
inline Status::Status(absl::StatusCode code, absl::string_view msg,
|
|
899
|
+
absl::SourceLocation loc)
|
|
900
|
+
: Status(MakeRep(CodeToInlinedRep(code), msg, loc)) {}
|
|
901
|
+
|
|
781
902
|
inline Status::Status(const Status& x) : Status(x.rep_) { Ref(rep_); }
|
|
782
903
|
|
|
783
904
|
inline Status& Status::operator=(const Status& x) {
|
|
@@ -862,9 +983,9 @@ inline void swap(absl::Status& a, absl::Status& b) noexcept {
|
|
|
862
983
|
swap(a.rep_, b.rep_);
|
|
863
984
|
}
|
|
864
985
|
|
|
865
|
-
inline
|
|
986
|
+
inline std::optional<absl::Cord> Status::GetPayload(
|
|
866
987
|
absl::string_view type_url) const {
|
|
867
|
-
if (IsInlined(rep_)) return
|
|
988
|
+
if (IsInlined(rep_)) return std::nullopt;
|
|
868
989
|
return RepToPointer(rep_)->GetPayload(type_url);
|
|
869
990
|
}
|
|
870
991
|
|
|
@@ -942,6 +1063,111 @@ inline Status CancelledError() { return Status(absl::StatusCode::kCancelled); }
|
|
|
942
1063
|
const char* absl_nonnull StatusMessageAsCStr(
|
|
943
1064
|
const Status& status ABSL_ATTRIBUTE_LIFETIME_BOUND);
|
|
944
1065
|
|
|
1066
|
+
namespace status_internal {
|
|
1067
|
+
// We use an int in the template parameter to shorten mangled names.
|
|
1068
|
+
template <int error_code>
|
|
1069
|
+
Status MakeErrorImpl(string_view message, SourceLocation loc);
|
|
1070
|
+
// Make the instantiations extern to reduce bloat on callers.
|
|
1071
|
+
extern template Status MakeErrorImpl<0>(string_view, SourceLocation);
|
|
1072
|
+
extern template Status MakeErrorImpl<1>(string_view, SourceLocation);
|
|
1073
|
+
extern template Status MakeErrorImpl<2>(string_view, SourceLocation);
|
|
1074
|
+
extern template Status MakeErrorImpl<3>(string_view, SourceLocation);
|
|
1075
|
+
extern template Status MakeErrorImpl<4>(string_view, SourceLocation);
|
|
1076
|
+
extern template Status MakeErrorImpl<5>(string_view, SourceLocation);
|
|
1077
|
+
extern template Status MakeErrorImpl<6>(string_view, SourceLocation);
|
|
1078
|
+
extern template Status MakeErrorImpl<7>(string_view, SourceLocation);
|
|
1079
|
+
extern template Status MakeErrorImpl<8>(string_view, SourceLocation);
|
|
1080
|
+
extern template Status MakeErrorImpl<9>(string_view, SourceLocation);
|
|
1081
|
+
extern template Status MakeErrorImpl<10>(string_view, SourceLocation);
|
|
1082
|
+
extern template Status MakeErrorImpl<11>(string_view, SourceLocation);
|
|
1083
|
+
extern template Status MakeErrorImpl<12>(string_view, SourceLocation);
|
|
1084
|
+
extern template Status MakeErrorImpl<13>(string_view, SourceLocation);
|
|
1085
|
+
extern template Status MakeErrorImpl<14>(string_view, SourceLocation);
|
|
1086
|
+
extern template Status MakeErrorImpl<15>(string_view, SourceLocation);
|
|
1087
|
+
extern template Status MakeErrorImpl<16>(string_view, SourceLocation);
|
|
1088
|
+
|
|
1089
|
+
template <StatusCode error_code>
|
|
1090
|
+
Status MakeError(string_view message, SourceLocation loc) {
|
|
1091
|
+
Status out = MakeErrorImpl<static_cast<int>(error_code)>(message, loc);
|
|
1092
|
+
// -Wassume warning complains about potential side effects of `ok()`, so use a
|
|
1093
|
+
// local to avoid that.
|
|
1094
|
+
ABSL_ATTRIBUTE_UNUSED bool ok = out.ok();
|
|
1095
|
+
ABSL_ASSUME(!ok);
|
|
1096
|
+
return out;
|
|
1097
|
+
}
|
|
1098
|
+
} // namespace status_internal
|
|
1099
|
+
|
|
1100
|
+
// Inline implementations to give the compiler static knowledge about the
|
|
1101
|
+
// objects.
|
|
1102
|
+
inline Status AbortedError(absl::string_view message,
|
|
1103
|
+
absl::SourceLocation loc) {
|
|
1104
|
+
return status_internal::MakeError<StatusCode::kAborted>(message, loc);
|
|
1105
|
+
}
|
|
1106
|
+
inline Status AlreadyExistsError(absl::string_view message,
|
|
1107
|
+
absl::SourceLocation loc) {
|
|
1108
|
+
return status_internal::MakeError<StatusCode::kAlreadyExists>(message, loc);
|
|
1109
|
+
}
|
|
1110
|
+
inline Status CancelledError(absl::string_view message,
|
|
1111
|
+
absl::SourceLocation loc) {
|
|
1112
|
+
return status_internal::MakeError<StatusCode::kCancelled>(message, loc);
|
|
1113
|
+
}
|
|
1114
|
+
inline Status DataLossError(absl::string_view message,
|
|
1115
|
+
absl::SourceLocation loc) {
|
|
1116
|
+
return status_internal::MakeError<StatusCode::kDataLoss>(message, loc);
|
|
1117
|
+
}
|
|
1118
|
+
inline Status DeadlineExceededError(absl::string_view message,
|
|
1119
|
+
absl::SourceLocation loc) {
|
|
1120
|
+
return status_internal::MakeError<StatusCode::kDeadlineExceeded>(message,
|
|
1121
|
+
loc);
|
|
1122
|
+
}
|
|
1123
|
+
inline Status FailedPreconditionError(absl::string_view message,
|
|
1124
|
+
absl::SourceLocation loc) {
|
|
1125
|
+
return status_internal::MakeError<StatusCode::kFailedPrecondition>(message,
|
|
1126
|
+
loc);
|
|
1127
|
+
}
|
|
1128
|
+
inline Status InternalError(absl::string_view message,
|
|
1129
|
+
absl::SourceLocation loc) {
|
|
1130
|
+
return status_internal::MakeError<StatusCode::kInternal>(message, loc);
|
|
1131
|
+
}
|
|
1132
|
+
inline Status InvalidArgumentError(absl::string_view message,
|
|
1133
|
+
absl::SourceLocation loc) {
|
|
1134
|
+
return status_internal::MakeError<StatusCode::kInvalidArgument>(message, loc);
|
|
1135
|
+
}
|
|
1136
|
+
inline Status NotFoundError(absl::string_view message,
|
|
1137
|
+
absl::SourceLocation loc) {
|
|
1138
|
+
return status_internal::MakeError<StatusCode::kNotFound>(message, loc);
|
|
1139
|
+
}
|
|
1140
|
+
inline Status OutOfRangeError(absl::string_view message,
|
|
1141
|
+
absl::SourceLocation loc) {
|
|
1142
|
+
return status_internal::MakeError<StatusCode::kOutOfRange>(message, loc);
|
|
1143
|
+
}
|
|
1144
|
+
inline Status PermissionDeniedError(absl::string_view message,
|
|
1145
|
+
absl::SourceLocation loc) {
|
|
1146
|
+
return status_internal::MakeError<StatusCode::kPermissionDenied>(message,
|
|
1147
|
+
loc);
|
|
1148
|
+
}
|
|
1149
|
+
inline Status ResourceExhaustedError(absl::string_view message,
|
|
1150
|
+
absl::SourceLocation loc) {
|
|
1151
|
+
return status_internal::MakeError<StatusCode::kResourceExhausted>(message,
|
|
1152
|
+
loc);
|
|
1153
|
+
}
|
|
1154
|
+
inline Status UnauthenticatedError(absl::string_view message,
|
|
1155
|
+
absl::SourceLocation loc) {
|
|
1156
|
+
return status_internal::MakeError<StatusCode::kUnauthenticated>(message, loc);
|
|
1157
|
+
}
|
|
1158
|
+
inline Status UnavailableError(absl::string_view message,
|
|
1159
|
+
absl::SourceLocation loc) {
|
|
1160
|
+
return status_internal::MakeError<StatusCode::kUnavailable>(message, loc);
|
|
1161
|
+
}
|
|
1162
|
+
inline Status UnimplementedError(absl::string_view message,
|
|
1163
|
+
absl::SourceLocation loc) {
|
|
1164
|
+
return status_internal::MakeError<StatusCode::kUnimplemented>(message, loc);
|
|
1165
|
+
}
|
|
1166
|
+
inline Status UnknownError(absl::string_view message,
|
|
1167
|
+
absl::SourceLocation loc) {
|
|
1168
|
+
return status_internal::MakeError<StatusCode::kUnknown>(message, loc);
|
|
1169
|
+
}
|
|
1170
|
+
|
|
945
1171
|
ABSL_NAMESPACE_END
|
|
946
1172
|
} // namespace absl
|
|
947
1173
|
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
15
|
#include <utility>
|
|
16
|
+
|
|
16
17
|
#include "absl/status/status.h"
|
|
18
|
+
#include "absl/types/source_location.h"
|
|
17
19
|
#include "benchmark/benchmark.h"
|
|
18
20
|
|
|
19
21
|
namespace {
|
|
@@ -34,4 +36,14 @@ void BM_CreateBad(benchmark::State& state) {
|
|
|
34
36
|
}
|
|
35
37
|
BENCHMARK(BM_CreateBad);
|
|
36
38
|
|
|
39
|
+
void BM_AppendSourceLocation(benchmark::State& state) {
|
|
40
|
+
for (auto _ : state) {
|
|
41
|
+
absl::Status s(absl::StatusCode::kInvalidArgument, "message");
|
|
42
|
+
benchmark::DoNotOptimize(s);
|
|
43
|
+
absl::Status s2(std::move(s), absl::SourceLocation::current());
|
|
44
|
+
benchmark::DoNotOptimize(s2);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
BENCHMARK(BM_AppendSourceLocation);
|
|
48
|
+
|
|
37
49
|
} // namespace
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// Copyright 2026 The Abseil Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "absl/status/status_builder.h"
|
|
16
|
+
|
|
17
|
+
#include <cstdint>
|
|
18
|
+
#include <memory>
|
|
19
|
+
#include <ostream>
|
|
20
|
+
#include <string>
|
|
21
|
+
#include <type_traits>
|
|
22
|
+
#include <utility>
|
|
23
|
+
|
|
24
|
+
#include "absl/base/attributes.h"
|
|
25
|
+
#include "absl/base/config.h"
|
|
26
|
+
#include "absl/base/macros.h"
|
|
27
|
+
#include "absl/status/status.h"
|
|
28
|
+
#include "absl/strings/cord.h"
|
|
29
|
+
#include "absl/strings/str_cat.h"
|
|
30
|
+
#include "absl/strings/string_view.h"
|
|
31
|
+
#include "absl/time/time.h"
|
|
32
|
+
#include "absl/types/source_location.h"
|
|
33
|
+
|
|
34
|
+
namespace absl {
|
|
35
|
+
ABSL_NAMESPACE_BEGIN
|
|
36
|
+
|
|
37
|
+
void StatusBuilder::Destroy(std::unique_ptr<Rep>) {
|
|
38
|
+
// nothing to do. The unique_ptr will do the cleanup.
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// These constructors are not-inlined and defined in the .cc file to reduce
|
|
42
|
+
// binary size. See cl/354351433 for a quantification.
|
|
43
|
+
StatusBuilder::StatusBuilder() {}
|
|
44
|
+
|
|
45
|
+
StatusBuilder::StatusBuilder(const absl::Status& original_status,
|
|
46
|
+
absl::SourceLocation location)
|
|
47
|
+
: loc_(location), rep_(InitRep(original_status)) {}
|
|
48
|
+
|
|
49
|
+
StatusBuilder::operator absl::Status() const& {
|
|
50
|
+
if (rep_ == nullptr) return absl::Status();
|
|
51
|
+
return CreateStatusAndConditionallyLog(loc_, std::make_unique<Rep>(*rep_));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
StatusBuilder::Rep::Rep(const absl::Status& s) : status(s) {}
|
|
55
|
+
StatusBuilder::Rep::Rep(absl::Status&& s) : status(std::move(s)) {}
|
|
56
|
+
StatusBuilder::Rep::~Rep() {}
|
|
57
|
+
|
|
58
|
+
StatusBuilder::Rep* StatusBuilder::InitRepImpl(absl::Status s) {
|
|
59
|
+
if (s.ok()) {
|
|
60
|
+
return nullptr;
|
|
61
|
+
} else {
|
|
62
|
+
return new Rep(std::move(s));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
StatusBuilder::Rep::Rep(const Rep& r)
|
|
67
|
+
: status(r.status),
|
|
68
|
+
logging_mode(r.logging_mode),
|
|
69
|
+
log_severity(r.log_severity),
|
|
70
|
+
verbose_level(r.verbose_level),
|
|
71
|
+
n(r.n),
|
|
72
|
+
period(r.period),
|
|
73
|
+
stream_message(r.stream_message),
|
|
74
|
+
sink(r.sink),
|
|
75
|
+
message_join_style(r.message_join_style),
|
|
76
|
+
should_log_stack_trace(r.should_log_stack_trace),
|
|
77
|
+
also_send_to_log(r.also_send_to_log) {
|
|
78
|
+
if (r.stream.has_value()) {
|
|
79
|
+
InitStream();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
void StatusBuilder::Rep::InitStream() { stream.emplace(stream_message); }
|
|
84
|
+
|
|
85
|
+
bool StatusBuilder::HasPayload() const {
|
|
86
|
+
static constexpr absl::string_view kMessageSetUrl =
|
|
87
|
+
"type.googleapis.com/util.MessageSetPayload";
|
|
88
|
+
return rep_ != nullptr && rep_->status.GetPayload(kMessageSetUrl).has_value();
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
ABSL_ATTRIBUTE_WEAK StatusBuilder& StatusBuilder::SetCode(
|
|
92
|
+
absl::StatusCode code) & {
|
|
93
|
+
if (rep_ == nullptr) {
|
|
94
|
+
rep_ = std::make_unique<StatusBuilder::Rep>(
|
|
95
|
+
absl::Status(code, absl::string_view(), absl::SourceLocation()));
|
|
96
|
+
} else {
|
|
97
|
+
absl::Status status(code, absl::string_view(), absl::SourceLocation());
|
|
98
|
+
rep_->status.ForEachPayload(
|
|
99
|
+
[&status](absl::string_view type_url, const absl::Cord& payload) {
|
|
100
|
+
status.SetPayload(type_url, payload);
|
|
101
|
+
});
|
|
102
|
+
rep_->status = std::move(status);
|
|
103
|
+
}
|
|
104
|
+
return *this;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
ABSL_ATTRIBUTE_WEAK void AbslInternalSetErrorCode(StatusBuilder& builder,
|
|
108
|
+
absl::StatusCode code) {
|
|
109
|
+
builder.SetCode(code);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
class status_internal::StatusPrivateAccessorForStatusBuilder {
|
|
113
|
+
public:
|
|
114
|
+
static absl::Status SetMessage(const absl::Status& status,
|
|
115
|
+
absl::string_view message) {
|
|
116
|
+
ABSL_ASSERT(!status.ok());
|
|
117
|
+
|
|
118
|
+
if (message.empty()) {
|
|
119
|
+
return absl::Status(status.code(), message, absl::SourceLocation());
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
using StatusRep =
|
|
123
|
+
std::remove_cv_t<std::remove_pointer_t<decltype(Status::RepToPointer(
|
|
124
|
+
std::declval<uintptr_t>()))>>;
|
|
125
|
+
StatusRep* rep;
|
|
126
|
+
if (Status::IsInlined(status.rep_)) {
|
|
127
|
+
rep = new StatusRep(Status::InlinedRepToCode(status.rep_), message,
|
|
128
|
+
nullptr);
|
|
129
|
+
} else {
|
|
130
|
+
rep = Status::RepToPointer(status.rep_)->Clone(message, true, true);
|
|
131
|
+
}
|
|
132
|
+
return absl::Status(Status::PointerToRep(rep));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
static absl::Status JoinMessageToStatus(absl::Status s, absl::string_view msg,
|
|
136
|
+
MessageJoinStyle style) {
|
|
137
|
+
if (s.ok() || msg.empty()) return s;
|
|
138
|
+
const absl::string_view original_message = s.message();
|
|
139
|
+
switch (style) {
|
|
140
|
+
case MessageJoinStyle::kAnnotate: {
|
|
141
|
+
std::string annotated;
|
|
142
|
+
if (!original_message.empty()) {
|
|
143
|
+
absl::StrAppend(&annotated, original_message, "; ", msg);
|
|
144
|
+
msg = annotated;
|
|
145
|
+
}
|
|
146
|
+
return SetMessage(s, msg);
|
|
147
|
+
}
|
|
148
|
+
case MessageJoinStyle::kPrepend:
|
|
149
|
+
return SetMessage(s, absl::StrCat(msg, original_message));
|
|
150
|
+
case MessageJoinStyle::kAppend:
|
|
151
|
+
return SetMessage(s, absl::StrCat(original_message, msg));
|
|
152
|
+
default:
|
|
153
|
+
return absl::InternalError("Unknown MessageJoinStyle");
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
ABSL_ATTRIBUTE_WEAK std::string StatusBuilder::CurrentStackTrace() {
|
|
159
|
+
return std::string();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
ABSL_ATTRIBUTE_WEAK absl::Status StatusBuilder::CreateStatusAndConditionallyLog(
|
|
163
|
+
absl::SourceLocation loc, std::unique_ptr<Rep> rep) {
|
|
164
|
+
if (rep == nullptr) return absl::OkStatus();
|
|
165
|
+
absl::Status result = status_internal::StatusPrivateAccessorForStatusBuilder::
|
|
166
|
+
JoinMessageToStatus(std::move(rep->status), rep->stream_message,
|
|
167
|
+
rep->message_join_style);
|
|
168
|
+
// Passing in the `loc` last to ensure the sequence of the source locations.
|
|
169
|
+
result.AddSourceLocation(loc);
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
ABSL_ATTRIBUTE_WEAK std::string StatusBuilder::ToString() const {
|
|
174
|
+
if (rep_ == nullptr) {
|
|
175
|
+
return absl::OkStatus().ToString();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return status_internal::StatusPrivateAccessorForStatusBuilder::
|
|
179
|
+
JoinMessageToStatus(rep_->status, rep_->stream_message,
|
|
180
|
+
rep_->message_join_style)
|
|
181
|
+
.WithSourceLocation(loc_)
|
|
182
|
+
.ToString();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
ABSL_ATTRIBUTE_WEAK std::ostream& operator<<(std::ostream& os,
|
|
186
|
+
const StatusBuilder& builder) {
|
|
187
|
+
return os << static_cast<absl::Status>(builder);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
ABSL_ATTRIBUTE_WEAK std::ostream& operator<<(std::ostream& os,
|
|
191
|
+
StatusBuilder&& builder) {
|
|
192
|
+
return os << static_cast<absl::Status>(std::move(builder));
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
ABSL_NAMESPACE_END
|
|
196
|
+
} // namespace absl
|