aboutsummaryrefslogtreecommitdiff
path: root/absl/strings
diff options
context:
space:
mode:
authorDerek Mauro <dmauro@google.com>2024-05-24 12:03:10 -0700
committerCopybara-Service <copybara-worker@google.com>2024-05-24 12:04:30 -0700
commit48235b8912de264abc5ed78a80516fb0b66dacd6 (patch)
tree19d5ae45a1a6131a3d1fe061fc7ab0b92e4c7a8f /absl/strings
parent52bc669d0ee5d9d7f787cbf576e3733c2b28db9c (diff)
downloadabseil-48235b8912de264abc5ed78a80516fb0b66dacd6.tar.gz
abseil-48235b8912de264abc5ed78a80516fb0b66dacd6.tar.bz2
abseil-48235b8912de264abc5ed78a80516fb0b66dacd6.zip
Workaround symbol resolution bug in Clang 19
Clang 19 seems to see the old usage of absl::string_internal::HasAbslStringify in GoogleTest 1.14.0 and incorrectly resolves absl::HasAbslStringify sometimes. This issue is fixed when a version of GoogleTest that removes absl::string_internal::HasAbslStringify is used. This workaround is ugly but will be removed after the next GoogleTest release. PiperOrigin-RevId: 636993564 Change-Id: Ic166edbd4ddc2c716afbedec34be629cfc988e00
Diffstat (limited to 'absl/strings')
-rw-r--r--absl/strings/has_absl_stringify.h1
-rw-r--r--absl/strings/internal/has_absl_stringify.h12
2 files changed, 12 insertions, 1 deletions
diff --git a/absl/strings/has_absl_stringify.h b/absl/strings/has_absl_stringify.h
index 274a7865..9af0191d 100644
--- a/absl/strings/has_absl_stringify.h
+++ b/absl/strings/has_absl_stringify.h
@@ -18,6 +18,7 @@
#include <type_traits>
#include <utility>
+#include "absl/base/config.h"
#include "absl/strings/string_view.h"
namespace absl {
diff --git a/absl/strings/internal/has_absl_stringify.h b/absl/strings/internal/has_absl_stringify.h
index f82cfe26..98f27dff 100644
--- a/absl/strings/internal/has_absl_stringify.h
+++ b/absl/strings/internal/has_absl_stringify.h
@@ -17,6 +17,9 @@
#include "absl/strings/has_absl_stringify.h"
+#include <type_traits>
+#include <utility>
+
#include "absl/base/config.h"
namespace absl {
@@ -34,7 +37,14 @@ namespace strings_internal {
//
// https://github.com/google/googletest/pull/4368#issuecomment-1717699895
// https://github.com/google/googletest/pull/4368#issuecomment-1717699895
-using ::absl::HasAbslStringify;
+template <typename T, typename = void>
+struct HasAbslStringify : std::false_type {};
+
+template <typename T>
+struct HasAbslStringify<
+ T, std::enable_if_t<std::is_void<decltype(AbslStringify(
+ std::declval<strings_internal::UnimplementedSink&>(),
+ std::declval<const T&>()))>::value>> : std::true_type {};
} // namespace strings_internal