From 06d311dc898f731f1ac1f903ddd34e6d79eb6f81 Mon Sep 17 00:00:00 2001 From: josetr <37419832+josetr@users.noreply.github.com> Date: Fri, 1 Jul 2022 13:25:05 +0100 Subject: [PATCH] Fix anonymous unions inside template classes --- .../Passes/FlattenAnonymousTypesToFields.cs | 2 +- tests/CSharp/CSharpTemplates.h | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Generator/Passes/FlattenAnonymousTypesToFields.cs b/src/Generator/Passes/FlattenAnonymousTypesToFields.cs index c15ef18f..71c07833 100644 --- a/src/Generator/Passes/FlattenAnonymousTypesToFields.cs +++ b/src/Generator/Passes/FlattenAnonymousTypesToFields.cs @@ -16,7 +16,7 @@ namespace CppSharp.Passes public override bool VisitClassDecl(Class @class) { - if (!base.VisitClassDecl(@class) || @class.Ignore || @class.IsDependent) + if (!base.VisitClassDecl(@class) || @class.Ignore) return false; for (int i = @class.Fields.Count - 1; i >= 0; i--) diff --git a/tests/CSharp/CSharpTemplates.h b/tests/CSharp/CSharpTemplates.h index bdb843fa..b43c76a5 100644 --- a/tests/CSharp/CSharpTemplates.h +++ b/tests/CSharp/CSharpTemplates.h @@ -221,6 +221,25 @@ void Base::invokeFriend() f(Nested()); } +template +struct TemplateUnionField +{ + union + { + struct + { + T x, y, z; + }; + T v; + }; +}; + +struct TemplateUnionFieldInstantiation +{ + TemplateUnionField tuf; + TemplateUnionField tuf1; +}; + template class DependentValueFields : public Base {