Browse Source

Added support for clearing declarations between visits and fixed some passes that need it.

pull/144/head
triton 12 years ago
parent
commit
8d9e866009
  1. 1
      src/Generator/Passes/CheckDuplicatedNamesPass.cs
  2. 5
      src/Generator/Passes/CheckOperatorsOverloads.cs
  3. 5
      src/Generator/Passes/Pass.cs

1
src/Generator/Passes/CheckDuplicatedNamesPass.cs

@ -89,6 +89,7 @@ namespace CppSharp.Passes
public CheckDuplicatedNamesPass() public CheckDuplicatedNamesPass()
{ {
ClearVisitedDeclarations = false;
names = new Dictionary<string, DeclarationName>(); names = new Dictionary<string, DeclarationName>();
} }

5
src/Generator/Passes/CheckOperatorsOverloads.cs

@ -9,6 +9,11 @@ namespace CppSharp.Passes
/// </summary> /// </summary>
class CheckOperatorsOverloadsPass : TranslationUnitPass class CheckOperatorsOverloadsPass : TranslationUnitPass
{ {
public CheckOperatorsOverloadsPass()
{
ClearVisitedDeclarations = false;
}
public override bool VisitClassDecl(Class @class) public override bool VisitClassDecl(Class @class)
{ {
if (@class.CompleteDeclaration != null) if (@class.CompleteDeclaration != null)

5
src/Generator/Passes/Pass.cs

@ -17,6 +17,8 @@ namespace CppSharp.Passes
get { return Driver.Diagnostics; } get { return Driver.Diagnostics; }
} }
public bool ClearVisitedDeclarations = false;
public virtual bool VisitLibrary(ASTContext context) public virtual bool VisitLibrary(ASTContext context)
{ {
AstContext = context; AstContext = context;
@ -34,6 +36,9 @@ namespace CppSharp.Passes
if (unit.IsSystemHeader) if (unit.IsSystemHeader)
return false; return false;
if (ClearVisitedDeclarations)
Visited.Clear();
VisitDeclarationContext(unit); VisitDeclarationContext(unit);
return true; return true;

Loading…
Cancel
Save