aboutsummaryrefslogtreecommitdiff
path: root/absl/debugging/internal/demangle_rust_test.cc
diff options
context:
space:
mode:
authorChris Mihelich <cmihelic@google.com>2024-05-23 08:41:31 -0700
committerCopybara-Service <copybara-worker@google.com>2024-05-23 08:42:45 -0700
commit414929371ba51c475d0512e0354d911bf1d00598 (patch)
tree4db3226033a86277ad1d2e363579bcaf78cfcef9 /absl/debugging/internal/demangle_rust_test.cc
parent1a31b81c0a467c1c8e229b9fc172a4eb0db5bd85 (diff)
downloadabseil-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.cc44
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