diff options
author | Chris Mihelich <cmihelic@google.com> | 2024-05-23 08:41:31 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2024-05-23 08:42:45 -0700 |
commit | 414929371ba51c475d0512e0354d911bf1d00598 (patch) | |
tree | 4db3226033a86277ad1d2e363579bcaf78cfcef9 /absl/debugging/internal/demangle_rust_test.cc | |
parent | 1a31b81c0a467c1c8e229b9fc172a4eb0db5bd85 (diff) | |
download | abseil-414929371ba51c475d0512e0354d911bf1d00598.tar.gz abseil-414929371ba51c475d0512e0354d911bf1d00598.tar.bz2 abseil-414929371ba51c475d0512e0354d911bf1d00598.zip |
Recognize dyn-trait-type in Rust demangling.
PiperOrigin-RevId: 636563266
Change-Id: Id4ee907c30d7dac400f1f85776cc5f1fcb3e20b7
Diffstat (limited to 'absl/debugging/internal/demangle_rust_test.cc')
-rw-r--r-- | absl/debugging/internal/demangle_rust_test.cc | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/absl/debugging/internal/demangle_rust_test.cc b/absl/debugging/internal/demangle_rust_test.cc index 34b78134..00bba780 100644 --- a/absl/debugging/internal/demangle_rust_test.cc +++ b/absl/debugging/internal/demangle_rust_test.cc @@ -534,6 +534,50 @@ TEST(DemangleRust, LifetimeInGenericArgs) { "c::f::<>"); } +TEST(DemangleRust, EmptyDynTrait) { + // This shouldn't happen, but the grammar allows it and existing demanglers + // accept it. + EXPECT_DEMANGLING("_RNvYDEL_NtC1c1t1f", + "<dyn as c::t>::f"); +} + +TEST(DemangleRust, SimpleDynTrait) { + EXPECT_DEMANGLING("_RNvYDNtC1c1tEL_NtC1d1u1f", + "<dyn c::t as d::u>::f"); +} + +TEST(DemangleRust, DynTraitWithOneAssociatedType) { + EXPECT_DEMANGLING( + "_RNvYDNtC1c1tp1xlEL_NtC1d1u1f", // <dyn c::t<x = i32> as d::u>::f + "<dyn c::t<> as d::u>::f"); +} + +TEST(DemangleRust, DynTraitWithTwoAssociatedTypes) { + EXPECT_DEMANGLING( + // <dyn c::t<x = i32, y = u32> as d::u>::f + "_RNvYDNtC1c1tp1xlp1ymEL_NtC1d1u1f", + "<dyn c::t<> as d::u>::f"); +} + +TEST(DemangleRust, DynTraitPlusAutoTrait) { + EXPECT_DEMANGLING( + "_RNvYDNtC1c1tNtNtC3std6marker4SendEL_NtC1d1u1f", + "<dyn c::t + std::marker::Send as d::u>::f"); +} + +TEST(DemangleRust, DynTraitPlusTwoAutoTraits) { + EXPECT_DEMANGLING( + "_RNvYDNtC1c1tNtNtC3std6marker4CopyNtBc_4SyncEL_NtC1d1u1f", + "<dyn c::t + std::marker::Copy + std::marker::Sync as d::u>::f"); +} + +TEST(DemangleRust, HigherRankedDynTrait) { + EXPECT_DEMANGLING( + // <dyn for<'a> c::t::<&'a i32> as d::u>::f + "_RNvYDG_INtC1c1tRL0_lEEL_NtC1d1u1f", + "<dyn c::t::<> as d::u>::f"); +} + } // namespace } // namespace debugging_internal ABSL_NAMESPACE_END |