diff --git a/src/Generator/Passes/CheckDuplicatedNamesPass.cs b/src/Generator/Passes/CheckDuplicatedNamesPass.cs index c82a5df3..8a5de857 100644 --- a/src/Generator/Passes/CheckDuplicatedNamesPass.cs +++ b/src/Generator/Passes/CheckDuplicatedNamesPass.cs @@ -89,6 +89,7 @@ namespace CppSharp.Passes public CheckDuplicatedNamesPass() { + ClearVisitedDeclarations = false; names = new Dictionary(); } diff --git a/src/Generator/Passes/CheckOperatorsOverloads.cs b/src/Generator/Passes/CheckOperatorsOverloads.cs index 1648fcdd..99e19b33 100644 --- a/src/Generator/Passes/CheckOperatorsOverloads.cs +++ b/src/Generator/Passes/CheckOperatorsOverloads.cs @@ -9,6 +9,11 @@ namespace CppSharp.Passes /// class CheckOperatorsOverloadsPass : TranslationUnitPass { + public CheckOperatorsOverloadsPass() + { + ClearVisitedDeclarations = false; + } + public override bool VisitClassDecl(Class @class) { if (@class.CompleteDeclaration != null) diff --git a/src/Generator/Passes/Pass.cs b/src/Generator/Passes/Pass.cs index 611872c0..a5ae77f1 100644 --- a/src/Generator/Passes/Pass.cs +++ b/src/Generator/Passes/Pass.cs @@ -17,6 +17,8 @@ namespace CppSharp.Passes get { return Driver.Diagnostics; } } + public bool ClearVisitedDeclarations = false; + public virtual bool VisitLibrary(ASTContext context) { AstContext = context; @@ -34,6 +36,9 @@ namespace CppSharp.Passes if (unit.IsSystemHeader) return false; + if (ClearVisitedDeclarations) + Visited.Clear(); + VisitDeclarationContext(unit); return true;