Browse Source

Generated valid code when C++ changes method access when overriding.

Signed-off-by: Dimitar Dobrev <dpldobrev@yahoo.com>
pull/534/head
Dimitar Dobrev 10 years ago
parent
commit
b7187c80c7
  1. 11
      src/Generator/Generators/CSharp/CSharpTextTemplate.cs
  2. 3
      tests/CSharpTemp/CSharpTemp.Tests.cs
  3. 18
      tests/CSharpTemp/CSharpTemp.cpp
  4. 10
      tests/CSharpTemp/CSharpTemp.h

11
src/Generator/Generators/CSharp/CSharpTextTemplate.cs

@ -2223,14 +2223,9 @@ namespace CppSharp.Generators.CSharp @@ -2223,14 +2223,9 @@ namespace CppSharp.Generators.CSharp
private static AccessSpecifier GetValidMethodAccess(Method method)
{
switch (method.Access)
{
case AccessSpecifier.Public:
return AccessSpecifier.Public;
default:
return method.IsOverride ?
((Class) method.Namespace).GetRootBaseMethod(method).Access : method.Access;
}
return method.IsOverride
? ((Class) method.Namespace).GetRootBaseMethod(method).Access
: method.Access;
}
private static AccessSpecifier GetValidPropertyAccess(Property property)

3
tests/CSharpTemp/CSharpTemp.Tests.cs

@ -210,7 +210,8 @@ public class CSharpTempTests : GeneratorTestFixture @@ -210,7 +210,8 @@ public class CSharpTempTests : GeneratorTestFixture
[Test]
public void TestPrivateOverride()
{
new HasPrivateOverride().PrivateOverride();
using (var hasOverridesWithChangedAccess = new HasOverridesWithChangedAccess())
hasOverridesWithChangedAccess.PrivateOverride();
}
[Test]

18
tests/CSharpTemp/CSharpTemp.cpp

@ -469,15 +469,27 @@ int MethodsWithDefaultValues::getA() @@ -469,15 +469,27 @@ int MethodsWithDefaultValues::getA()
return m_foo.A;
}
void HasPrivateOverrideBase::privateOverride(int i)
HasOverridesWithChangedAccessBase::HasOverridesWithChangedAccessBase()
{
}
HasPrivateOverride::HasPrivateOverride()
void HasOverridesWithChangedAccessBase::privateOverride(int i)
{
}
void HasPrivateOverride::privateOverride(int i)
void HasOverridesWithChangedAccessBase::publicOverride()
{
}
HasOverridesWithChangedAccess::HasOverridesWithChangedAccess()
{
}
void HasOverridesWithChangedAccess::privateOverride(int i)
{
}
void HasOverridesWithChangedAccess::publicOverride()
{
}

10
tests/CSharpTemp/CSharpTemp.h

@ -363,16 +363,20 @@ private: @@ -363,16 +363,20 @@ private:
Foo m_foo;
};
class DLL_API HasPrivateOverrideBase
class DLL_API HasOverridesWithChangedAccessBase
{
public:
HasOverridesWithChangedAccessBase();
virtual void privateOverride(int i = 5);
protected:
virtual void publicOverride();
};
class DLL_API HasPrivateOverride : public HasPrivateOverrideBase
class DLL_API HasOverridesWithChangedAccess : public HasOverridesWithChangedAccessBase
{
public:
HasPrivateOverride();
HasOverridesWithChangedAccess();
void publicOverride();
private:
virtual void privateOverride(int i);
};

Loading…
Cancel
Save