Skip to content

Commit d932a09

Browse files
zillemarcotritao
authored andcommitted
Fixed incorrectly generated bindings for class with non-type template arguments
Fixes #979
1 parent 54ad95b commit d932a09

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/Generator/Passes/CheckIgnoredDecls.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,10 @@ private bool IsDeclIgnored(Declaration decl)
490490

491491
private void IgnoreUnsupportedTemplates(Class @class)
492492
{
493+
if (@class.TemplateParameters.Any(param => param is NonTypeTemplateParameter))
494+
foreach (var specialization in @class.Specializations)
495+
specialization.ExplicitlyIgnore();
496+
493497
if (!Options.IsCLIGenerator && !@class.TranslationUnit.IsSystemHeader &&
494498
@class.Specializations.Count > 0)
495499
return;
@@ -500,6 +504,7 @@ private void IgnoreUnsupportedTemplates(Class @class)
500504
hasExplicitlyGeneratedSpecializations = true;
501505
else
502506
specialization.ExplicitlyIgnore();
507+
503508
if (!hasExplicitlyGeneratedSpecializations)
504509
@class.ExplicitlyIgnore();
505510
}

tests/CSharp/CSharpTemplates.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,4 +520,14 @@ class ForwardTemplateFriendClass
520520
};
521521

522522
class ForwardTemplateFriendClassUser : public ForwardTemplateFriendClass<ForwardTemplateFriendClassUser>
523+
{ };
524+
525+
template<int I>
526+
class ClassWithNonTypeTemplateArgument
527+
{
528+
public:
529+
ClassWithNonTypeTemplateArgument() { }
530+
};
531+
532+
class SpecializationOfClassWithNonTypeTemplateArgument : public ClassWithNonTypeTemplateArgument<0>
523533
{ };

0 commit comments

Comments
 (0)