Use mangled type names in `cc_struct_upcast_impl`'s `cast_fn_name`.
PiperOrigin-RevId: 471545380
diff --git a/rs_bindings_from_cc/src_code_gen.rs b/rs_bindings_from_cc/src_code_gen.rs
index bd8bc85..f96b863 100644
--- a/rs_bindings_from_cc/src_code_gen.rs
+++ b/rs_bindings_from_cc/src_code_gen.rs
@@ -3165,11 +3165,9 @@
let offset = Literal::i64_unsuffixed(offset);
body = quote! {(derived as *const _ as *const u8).offset(#offset) as *const #base_name};
} else {
- // TODO(b/216195042): use mangled names here, or otherwise guarantee
- // non-collision.
let cast_fn_name = make_rs_ident(&format!(
"__crubit_dynamic_upcast__{}__to__{}",
- record.rs_name, base_record.rs_name
+ record.mangled_cc_name, base_record.mangled_cc_name
));
let base_cc_name = cc_type_name_for_record(base_record.as_ref(), ir)?;
let derived_cc_name = cc_type_name_for_record(record.as_ref(), ir)?;
@@ -5526,7 +5524,7 @@
quote! {
unsafe impl oops::Inherits<crate::VirtualBase> for crate::Derived {
unsafe fn upcast_ptr(derived: *const Self) -> *const crate::VirtualBase {
- crate::detail::__crubit_dynamic_upcast__Derived__to__VirtualBase(derived)
+ crate::detail::__crubit_dynamic_upcast__7Derived__to__11VirtualBase(derived)
}
}
}