Don't import private structs, even indirectly as part of template instantiation! PiperOrigin-RevId: 478948147
diff --git a/rs_bindings_from_cc/src_code_gen.rs b/rs_bindings_from_cc/src_code_gen.rs index ac8f005..2745e15 100644 --- a/rs_bindings_from_cc/src_code_gen.rs +++ b/rs_bindings_from_cc/src_code_gen.rs
@@ -7431,6 +7431,30 @@ } #[test] + fn test_private_struct_not_present() -> Result<()> { + let ir = ir_from_cc(&with_lifetime_macros( + r#"#pragma clang lifetime_elision + template <typename T> class MyTemplate {}; + class HasPrivateType { + private: + struct PrivateType { + using Foo = MyTemplate<PrivateType>; + Foo* get(); + }; + protected: + HasPrivateType(MyTemplate<PrivateType> x) {} + };"#, + ))?; + let rs_api = generate_bindings_tokens(ir)?.rs_api; + + assert_rs_not_matches!( + rs_api, + quote! { __CcTemplateInst10MyTemplateIN14HasPrivateType11PrivateTypeEE } + ); + Ok(()) + } + + #[test] fn test_implicit_template_specializations_are_sorted_by_mangled_name() -> Result<()> { let bindings = generate_bindings_tokens(ir_from_cc( r#"