Browse Source

Fixed the generated C# when a base class is an external specialisation.

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

6
src/Generator/Passes/TrimSpecializationsPass.cs

@ -190,7 +190,11 @@ namespace CppSharp.Passes @@ -190,7 +190,11 @@ namespace CppSharp.Passes
{
var specialization = @base.Class as ClassTemplateSpecialization;
if (specialization != null)
AddSpecialization(specialization);
{
if (!ASTUtils.CheckTypeForSpecialization(@base.Type, @class,
AddSpecialization, Context.TypeMaps))
CheckForInternalSpecialization(@class, @base.Type);
}
CheckBasesForSpecialization(@base.Class);
}
}

7
tests/NamespacesBase/NamespacesBase.h

@ -59,6 +59,13 @@ class TemplateClass @@ -59,6 +59,13 @@ class TemplateClass
T t;
};
template <typename T>
class TemplateWithIndependentFields
{
public:
void useDependentPointer(const T* t);
};
class DLL_API HasVirtualInCore
{
public:

8
tests/NamespacesDerived/NamespacesDerived.cpp

@ -62,6 +62,14 @@ Abstract* Derived2::getAbstract() @@ -62,6 +62,14 @@ Abstract* Derived2::getAbstract()
return 0;
}
DerivedFromExternalSpecialization::DerivedFromExternalSpecialization()
{
}
DerivedFromExternalSpecialization::~DerivedFromExternalSpecialization()
{
}
HasVirtualInDependency::HasVirtualInDependency()
{
}

1
tests/NamespacesDerived/NamespacesDerived.cs

@ -16,6 +16,7 @@ namespace CppSharp.Tests @@ -16,6 +16,7 @@ namespace CppSharp.Tests
{
base.Setup(driver);
driver.Options.GenerateDefaultValuesForArguments = true;
driver.Options.GenerateClassTemplates = true;
driver.Options.Modules[1].IncludeDirs.Add(GetTestsDirectory("NamespacesDerived"));
var @base = "NamespacesBase";

7
tests/NamespacesDerived/NamespacesDerived.h

@ -71,6 +71,13 @@ public: @@ -71,6 +71,13 @@ public:
int callManagedOverride();
};
class DLL_API DerivedFromExternalSpecialization : public TemplateWithIndependentFields<Derived>
{
public:
DerivedFromExternalSpecialization();
~DerivedFromExternalSpecialization();
};
class DLL_API DerivedFromSecondaryBaseInDependency : public Derived, public SecondaryBase
{
public:

Loading…
Cancel
Save