diff --git a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs index 6ba20e24..8bb47cf3 100644 --- a/src/Generator/Generators/CSharp/CSharpTextTemplate.cs +++ b/src/Generator/Generators/CSharp/CSharpTextTemplate.cs @@ -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) diff --git a/tests/CSharpTemp/CSharpTemp.Tests.cs b/tests/CSharpTemp/CSharpTemp.Tests.cs index 14ac6910..da8a0ce9 100644 --- a/tests/CSharpTemp/CSharpTemp.Tests.cs +++ b/tests/CSharpTemp/CSharpTemp.Tests.cs @@ -210,7 +210,8 @@ public class CSharpTempTests : GeneratorTestFixture [Test] public void TestPrivateOverride() { - new HasPrivateOverride().PrivateOverride(); + using (var hasOverridesWithChangedAccess = new HasOverridesWithChangedAccess()) + hasOverridesWithChangedAccess.PrivateOverride(); } [Test] diff --git a/tests/CSharpTemp/CSharpTemp.cpp b/tests/CSharpTemp/CSharpTemp.cpp index 7469698d..855ece0b 100644 --- a/tests/CSharpTemp/CSharpTemp.cpp +++ b/tests/CSharpTemp/CSharpTemp.cpp @@ -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() { } diff --git a/tests/CSharpTemp/CSharpTemp.h b/tests/CSharpTemp/CSharpTemp.h index 09fb04e2..263fb105 100644 --- a/tests/CSharpTemp/CSharpTemp.h +++ b/tests/CSharpTemp/CSharpTemp.h @@ -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); };