aboutsummaryrefslogtreecommitdiff
path: root/absl/debugging/internal/demangle_test.cc
diff options
context:
space:
mode:
authorChris Mihelich <cmihelic@google.com>2024-06-04 14:28:23 -0700
committerCopybara-Service <copybara-worker@google.com>2024-06-04 14:29:31 -0700
commitd8e17c009185a3bb305d774aa9e41f3c5de605f6 (patch)
tree350c3ea56cd8d0534b396907897470bb6b5fba98 /absl/debugging/internal/demangle_test.cc
parent36d1644be1fe815cef318e52a3ef4c8f5c50ea01 (diff)
downloadabseil-d8e17c009185a3bb305d774aa9e41f3c5de605f6.tar.gz
abseil-d8e17c009185a3bb305d774aa9e41f3c5de605f6.tar.bz2
abseil-d8e17c009185a3bb305d774aa9e41f3c5de605f6.zip
Demangle types nested under vendor extended types.
PiperOrigin-RevId: 640284003 Change-Id: I3ad2d971383513c7eeb5e3179e50c036cf7aa020
Diffstat (limited to 'absl/debugging/internal/demangle_test.cc')
-rw-r--r--absl/debugging/internal/demangle_test.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/absl/debugging/internal/demangle_test.cc b/absl/debugging/internal/demangle_test.cc
index 6010bd87..cb8b36d0 100644
--- a/absl/debugging/internal/demangle_test.cc
+++ b/absl/debugging/internal/demangle_test.cc
@@ -192,6 +192,27 @@ TEST(Demangle, FailsOnTwoArgTemplateBuiltinType) {
Demangle("_Z3fooIicEu17__my_builtin_typeIT_T0_Ev", tmp, sizeof(tmp)));
}
+TEST(Demangle, TypeNestedUnderTemplatedBuiltinType) {
+ char tmp[100];
+
+ // Source:
+ //
+ // template <typename T>
+ // typename std::remove_reference_t<T>::type f(T t);
+ //
+ // struct C { using type = C; };
+ //
+ // f<const C&>(C{});
+ //
+ // These days std::remove_reference_t is implemented in terms of a vendor
+ // builtin __remove_reference_t. A full demangling might look like:
+ //
+ // __remove_reference_t<C const&>::type f<C const&>(C const&)
+ ASSERT_TRUE(Demangle("_Z1fIRK1CENu20__remove_reference_tIT_E4typeES3_",
+ tmp, sizeof(tmp)));
+ EXPECT_STREQ("f<>()", tmp);
+}
+
TEST(Demangle, TemplateTemplateParamSubstitution) {
char tmp[100];