Change abseil hardening assertion in any_invocable from macro to function This associates debug information with the assertion site, allowing clearer stack-traces for assertion failures and better accounting of the performance overhead of assertions. PiperOrigin-RevId: 912616493 Change-Id: I3bcaa8d24fc7d9adc04e67fe228bf418bb5eb842
diff --git a/absl/functional/BUILD.bazel b/absl/functional/BUILD.bazel index 5e85523..85793aa 100644 --- a/absl/functional/BUILD.bazel +++ b/absl/functional/BUILD.bazel
@@ -44,6 +44,7 @@ deps = [ "//absl/base:config", "//absl/base:core_headers", + "//absl/base:hardening", "//absl/base:nullability", "//absl/meta:type_traits", "//absl/utility", @@ -62,6 +63,7 @@ ":any_invocable", "//absl/base:config", "//absl/base:core_headers", + "//absl/base:hardening", "//absl/base:nullability", "//absl/meta:type_traits", "//absl/utility",
diff --git a/absl/functional/CMakeLists.txt b/absl/functional/CMakeLists.txt index 362c149..7beb176 100644 --- a/absl/functional/CMakeLists.txt +++ b/absl/functional/CMakeLists.txt
@@ -27,6 +27,7 @@ absl::base absl::config absl::core_headers + absl::hardening absl::type_traits absl::utility PUBLIC
diff --git a/absl/functional/internal/any_invocable.h b/absl/functional/internal/any_invocable.h index 262385a..f8c2f64 100644 --- a/absl/functional/internal/any_invocable.h +++ b/absl/functional/internal/any_invocable.h
@@ -65,6 +65,7 @@ #include "absl/base/attributes.h" #include "absl/base/config.h" +#include "absl/base/internal/hardening.h" #include "absl/base/macros.h" #include "absl/base/nullability.h" #include "absl/base/optimization.h" @@ -729,7 +730,7 @@ /*Raises a fatal error when the AnyInvocable is invoked after a move*/ \ static ReturnType InvokedAfterMove( \ TypeErasedState*, ForwardedParameterType<P>...) noexcept(noex) { \ - ABSL_HARDENING_ASSERT(false && "AnyInvocable use-after-move"); \ + absl::base_internal::HardeningAssert(false); \ std::terminate(); \ } \ \