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
TranslationUnitPasses.AddPass(new SortDeclarationsPass()); TranslationUnitPasses.AddPass(new SortDeclarationsPass());
TranslationUnitPasses.AddPass(new ResolveIncompleteDeclsPass()); TranslationUnitPasses.AddPass(new ResolveIncompleteDeclsPass());
TranslationUnitPasses.AddPass(new IgnoreSystemDeclarationsPass()); TranslationUnitPasses.AddPass(new IgnoreSystemDeclarationsPass());
if (Options.IsCSharpGenerator)
TranslationUnitPasses.AddPass(new EqualiseAccessOfOverrideAndBasePass());
TranslationUnitPasses.AddPass(new CheckIgnoredDeclsPass()); TranslationUnitPasses.AddPass(new CheckIgnoredDeclsPass());
if (Options.IsCSharpGenerator) if (Options.IsCSharpGenerator)
@ -323,7 +325,6 @@ namespace CppSharp
TranslationUnitPasses.AddPass(new MultipleInheritancePass()); TranslationUnitPasses.AddPass(new MultipleInheritancePass());
TranslationUnitPasses.AddPass(new ParamTypeToInterfacePass()); TranslationUnitPasses.AddPass(new ParamTypeToInterfacePass());
TranslationUnitPasses.AddPass(new DelegatesPass()); TranslationUnitPasses.AddPass(new DelegatesPass());
TranslationUnitPasses.AddPass(new EqualiseAccessOfOverrideAndBasePass());
} }
TranslationUnitPasses.AddPass(new GetterSetterToPropertyPass()); TranslationUnitPasses.AddPass(new GetterSetterToPropertyPass());

14
src/Generator/Passes/EqualiseAccessOfOverrideAndBasePass.cs

@ -6,6 +6,20 @@ namespace CppSharp.Passes
{ {
public class EqualiseAccessOfOverrideAndBasePass : TranslationUnitPass 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) public override bool VisitASTContext(ASTContext context)
{ {
var result = base.VisitASTContext(context); var result = base.VisitASTContext(context);

1
tests/Common/Common.h

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

Loading…
Cancel
Save