Browse Source

Fixed a regression when a public virtual is overridden as private.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/904/head
Dimitar Dobrev 8 years ago
parent
commit
8b9c3ab89f
  1. 3
      src/Generator/Driver.cs
  2. 14
      src/Generator/Passes/EqualiseAccessOfOverrideAndBasePass.cs
  3. 1
      tests/Common/Common.h

3
src/Generator/Driver.cs

@ -281,6 +281,8 @@ namespace CppSharp @@ -281,6 +281,8 @@ namespace CppSharp
TranslationUnitPasses.AddPass(new SortDeclarationsPass());
TranslationUnitPasses.AddPass(new ResolveIncompleteDeclsPass());
TranslationUnitPasses.AddPass(new IgnoreSystemDeclarationsPass());
if (Options.IsCSharpGenerator)
TranslationUnitPasses.AddPass(new EqualiseAccessOfOverrideAndBasePass());
TranslationUnitPasses.AddPass(new CheckIgnoredDeclsPass());
if (Options.IsCSharpGenerator)
@ -323,7 +325,6 @@ namespace CppSharp @@ -323,7 +325,6 @@ namespace CppSharp
TranslationUnitPasses.AddPass(new MultipleInheritancePass());
TranslationUnitPasses.AddPass(new ParamTypeToInterfacePass());
TranslationUnitPasses.AddPass(new DelegatesPass());
TranslationUnitPasses.AddPass(new EqualiseAccessOfOverrideAndBasePass());
}
TranslationUnitPasses.AddPass(new GetterSetterToPropertyPass());

14
src/Generator/Passes/EqualiseAccessOfOverrideAndBasePass.cs

@ -6,6 +6,20 @@ namespace CppSharp.Passes @@ -6,6 +6,20 @@ namespace CppSharp.Passes
{
public class EqualiseAccessOfOverrideAndBasePass : TranslationUnitPass
{
public EqualiseAccessOfOverrideAndBasePass()
{
VisitOptions.VisitClassBases = false;
VisitOptions.VisitClassFields = false;
VisitOptions.VisitClassProperties = false;
VisitOptions.VisitEventParameters = false;
VisitOptions.VisitFunctionParameters = false;
VisitOptions.VisitFunctionReturnType = false;
VisitOptions.VisitNamespaceEnums = false;
VisitOptions.VisitNamespaceEvents = false;
VisitOptions.VisitNamespaceVariables = false;
VisitOptions.VisitTemplateArguments = false;
}
public override bool VisitASTContext(ASTContext context)
{
var result = base.VisitASTContext(context);

1
tests/Common/Common.h

@ -261,6 +261,7 @@ public: @@ -261,6 +261,7 @@ public:
typedef int typedefInOverride;
virtual int pureFunction(typedefInOverride i = 0);
virtual int pureFunction1();
private:
virtual int pureFunction2(bool* ok = 0);
};

Loading…
Cancel
Save