From 723c2e7c8a5c6bc1bb79edf2cbfb577d00fd56c5 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Fri, 8 May 2026 11:34:49 -0700 Subject: [PATCH] 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 --- absl/functional/BUILD.bazel | 2 ++ absl/functional/CMakeLists.txt | 1 + absl/functional/internal/any_invocable.h | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/absl/functional/BUILD.bazel b/absl/functional/BUILD.bazel index 5e855235..85793aa0 100644 --- a/absl/functional/BUILD.bazel +++ b/absl/functional/BUILD.bazel @@ -44,6 +44,7 @@ cc_library( deps = [ "//absl/base:config", "//absl/base:core_headers", + "//absl/base:hardening", "//absl/base:nullability", "//absl/meta:type_traits", "//absl/utility", @@ -62,6 +63,7 @@ cc_test( ":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 362c1497..7beb1761 100644 --- a/absl/functional/CMakeLists.txt +++ b/absl/functional/CMakeLists.txt @@ -27,6 +27,7 @@ absl_cc_library( 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 262385a3..f8c2f642 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 @@ using CanAssignReferenceWrapper = TrueAlias< /*Raises a fatal error when the AnyInvocable is invoked after a move*/ \ static ReturnType InvokedAfterMove( \ TypeErasedState*, ForwardedParameterType

...) noexcept(noex) { \ - ABSL_HARDENING_ASSERT(false && "AnyInvocable use-after-move"); \ + absl::base_internal::HardeningAssert(false); \ std::terminate(); \ } \ \