Browse Source

Fixed the renaming of methods in forwarded types from secondary bases in dependencies.

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

4
src/Generator/Passes/RenamePass.cs

@ -30,6 +30,7 @@ namespace CppSharp.Passes @@ -30,6 +30,7 @@ namespace CppSharp.Passes
protected RenamePass()
{
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitTemplateArguments = false;
// these need to be visited but in a different order (see VisitClassDecl) so disable the default order
@ -226,6 +227,9 @@ namespace CppSharp.Passes @@ -226,6 +227,9 @@ namespace CppSharp.Passes
if (!base.VisitClassDecl(@class))
return false;
if (@class.OriginalClass != null)
VisitClassDecl(@class.OriginalClass);
foreach (var property in @class.Properties.OrderByDescending(p => p.Access))
VisitProperty(property);

12
tests/NamespacesBase/NamespacesBase.cpp

@ -36,3 +36,15 @@ int HasVirtualInCore::virtualInCore(int parameter) @@ -36,3 +36,15 @@ int HasVirtualInCore::virtualInCore(int parameter)
{
return 1;
}
SecondaryBase::SecondaryBase()
{
}
SecondaryBase::~SecondaryBase()
{
}
void SecondaryBase::function()
{
}

11
tests/NamespacesBase/NamespacesBase.h

@ -65,3 +65,14 @@ public: @@ -65,3 +65,14 @@ public:
HasVirtualInCore();
virtual int virtualInCore(int parameter);
};
class DLL_API DerivedFromSecondaryBaseInDependency;
typedef DerivedFromSecondaryBaseInDependency RenameDerivedBeforeBase;
class DLL_API SecondaryBase
{
public:
SecondaryBase();
~SecondaryBase();
void function();
};

11
tests/NamespacesDerived/NamespacesDerived.Tests.cs

@ -4,6 +4,12 @@ using NUnit.Framework; @@ -4,6 +4,12 @@ using NUnit.Framework;
[TestFixture]
public class NamespaceDerivedTests
{
[Test]
public void TestCodeGeneration()
{
using (new DerivedFromSecondaryBaseInDependency()) { }
}
[Test]
public void TestNonRenamedMethod()
{
@ -27,9 +33,6 @@ public class NamespaceDerivedTests @@ -27,9 +33,6 @@ public class NamespaceDerivedTests
private class OverrideMethodFromDependency : HasVirtualInDependency
{
public override int VirtualInCore(int parameter)
{
return 2;
}
public override int VirtualInCore(int parameter) => 2;
}
}

8
tests/NamespacesDerived/NamespacesDerived.cpp

@ -70,3 +70,11 @@ int HasVirtualInDependency::callManagedOverride() @@ -70,3 +70,11 @@ int HasVirtualInDependency::callManagedOverride()
{
return managedObject->virtualInCore(0);
}
DerivedFromSecondaryBaseInDependency::DerivedFromSecondaryBaseInDependency()
{
}
DerivedFromSecondaryBaseInDependency::~DerivedFromSecondaryBaseInDependency()
{
}

7
tests/NamespacesDerived/NamespacesDerived.h

@ -71,6 +71,13 @@ public: @@ -71,6 +71,13 @@ public:
int callManagedOverride();
};
class DLL_API DerivedFromSecondaryBaseInDependency : public Derived, public SecondaryBase
{
public:
DerivedFromSecondaryBaseInDependency();
~DerivedFromSecondaryBaseInDependency();
};
namespace NamespacesBase
{
class DLL_API ClassInNamespaceNamedAfterDependency

Loading…
Cancel
Save