Browse Source

Fixed incorrectly generated bindings for class with non-type template arguments

Fixes #979
pull/982/head
Marco Zille 8 years ago committed by João Matos
parent
commit
d932a09cdf
  1. 5
      src/Generator/Passes/CheckIgnoredDecls.cs
  2. 10
      tests/CSharp/CSharpTemplates.h

5
src/Generator/Passes/CheckIgnoredDecls.cs

@ -490,6 +490,10 @@ namespace CppSharp.Passes @@ -490,6 +490,10 @@ namespace CppSharp.Passes
private void IgnoreUnsupportedTemplates(Class @class)
{
if (@class.TemplateParameters.Any(param => param is NonTypeTemplateParameter))
foreach (var specialization in @class.Specializations)
specialization.ExplicitlyIgnore();
if (!Options.IsCLIGenerator && !@class.TranslationUnit.IsSystemHeader &&
@class.Specializations.Count > 0)
return;
@ -500,6 +504,7 @@ namespace CppSharp.Passes @@ -500,6 +504,7 @@ namespace CppSharp.Passes
hasExplicitlyGeneratedSpecializations = true;
else
specialization.ExplicitlyIgnore();
if (!hasExplicitlyGeneratedSpecializations)
@class.ExplicitlyIgnore();
}

10
tests/CSharp/CSharpTemplates.h

@ -520,4 +520,14 @@ protected: @@ -520,4 +520,14 @@ protected:
};
class ForwardTemplateFriendClassUser : public ForwardTemplateFriendClass<ForwardTemplateFriendClassUser>
{ };
template<int I>
class ClassWithNonTypeTemplateArgument
{
public:
ClassWithNonTypeTemplateArgument() { }
};
class SpecializationOfClassWithNonTypeTemplateArgument : public ClassWithNonTypeTemplateArgument<0>
{ };
Loading…
Cancel
Save