Browse Source

Fixed the generated C# when a function uses an external specialisation.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/1033/head
Dimitar Dobrev 8 years ago
parent
commit
84f145b3e9
  1. 11
      src/Generator/Passes/TrimSpecializationsPass.cs
  2. 5
      tests/NamespacesDerived/NamespacesDerived.cpp
  3. 1
      tests/NamespacesDerived/NamespacesDerived.h

11
src/Generator/Passes/TrimSpecializationsPass.cs

@ -97,8 +97,15 @@ namespace CppSharp.Passes @@ -97,8 +97,15 @@ namespace CppSharp.Passes
private void CleanSpecializations(Class template)
{
template.Specializations.RemoveAll(s =>
s.SpecializationKind == TemplateSpecializationKind.Undeclared ||
(!specializations.Contains(s) && !internalSpecializations.Contains(s)));
{
if (s.SpecializationKind == TemplateSpecializationKind.Undeclared ||
(!specializations.Contains(s) && !internalSpecializations.Contains(s)))
{
s.ExplicitlyIgnore();
return true;
}
return false;
});
foreach (var specialization in template.Specializations.Where(
s => s is ClassTemplatePartialSpecialization))

5
tests/NamespacesDerived/NamespacesDerived.cpp

@ -70,6 +70,11 @@ DerivedFromExternalSpecialization::~DerivedFromExternalSpecialization() @@ -70,6 +70,11 @@ DerivedFromExternalSpecialization::~DerivedFromExternalSpecialization()
{
}
TemplateWithIndependentFields<Base3> DerivedFromExternalSpecialization::returnExternalSpecialization()
{
return TemplateWithIndependentFields<Base3>();
}
HasVirtualInDependency::HasVirtualInDependency()
{
}

1
tests/NamespacesDerived/NamespacesDerived.h

@ -76,6 +76,7 @@ class DLL_API DerivedFromExternalSpecialization : public TemplateWithIndependent @@ -76,6 +76,7 @@ class DLL_API DerivedFromExternalSpecialization : public TemplateWithIndependent
public:
DerivedFromExternalSpecialization();
~DerivedFromExternalSpecialization();
TemplateWithIndependentFields<Base3> returnExternalSpecialization();
};
class DLL_API DerivedFromSecondaryBaseInDependency : public Derived, public SecondaryBase

Loading…
Cancel
Save