diff options
author | Chris Mihelich <cmihelic@google.com> | 2024-06-04 14:28:23 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-06-04 14:29:31 -0700 |
commit | d8e17c009185a3bb305d774aa9e41f3c5de605f6 (patch) | |
tree | 350c3ea56cd8d0534b396907897470bb6b5fba98 /absl/debugging/internal/demangle_test.cc | |
parent | 36d1644be1fe815cef318e52a3ef4c8f5c50ea01 (diff) | |
download | abseil-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.cc | 21 |
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]; |