Browse Source

Fix anonymous unions inside template classes

refactor
josetr 3 years ago
parent
commit
06d311dc89
  1. 2
      src/Generator/Passes/FlattenAnonymousTypesToFields.cs
  2. 19
      tests/CSharp/CSharpTemplates.h

2
src/Generator/Passes/FlattenAnonymousTypesToFields.cs

@ -16,7 +16,7 @@ namespace CppSharp.Passes
public override bool VisitClassDecl(Class @class) public override bool VisitClassDecl(Class @class)
{ {
if (!base.VisitClassDecl(@class) || @class.Ignore || @class.IsDependent) if (!base.VisitClassDecl(@class) || @class.Ignore)
return false; return false;
for (int i = @class.Fields.Count - 1; i >= 0; i--) for (int i = @class.Fields.Count - 1; i >= 0; i--)

19
tests/CSharp/CSharpTemplates.h

@ -221,6 +221,25 @@ void Base<T>::invokeFriend()
f(Nested()); f(Nested());
} }
template <typename T>
struct TemplateUnionField
{
union
{
struct
{
T x, y, z;
};
T v;
};
};
struct TemplateUnionFieldInstantiation
{
TemplateUnionField<int> tuf;
TemplateUnionField<float> tuf1;
};
template <typename T> template <typename T>
class DependentValueFields : public Base<T> class DependentValueFields : public Base<T>
{ {

Loading…
Cancel
Save