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
private void CleanSpecializations(Class template) private void CleanSpecializations(Class template)
{ {
template.Specializations.RemoveAll(s => 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( foreach (var specialization in template.Specializations.Where(
s => s is ClassTemplatePartialSpecialization)) s => s is ClassTemplatePartialSpecialization))

5
tests/NamespacesDerived/NamespacesDerived.cpp

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

1
tests/NamespacesDerived/NamespacesDerived.h

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

Loading…
Cancel
Save