diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index 23bc8cc6..fad98a97 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -88,6 +88,7 @@ namespace Cxxi passes.CleanUnit(Options); passes.SortDeclarations(); passes.ResolveIncompleteDecls(TypeDatabase); + passes.CheckTypeReferences(); passes.CheckFlagEnums(); if (Transform != null) diff --git a/src/Generator/Passes/CheckTypeReferencesPass.cs b/src/Generator/Passes/CheckTypeReferencesPass.cs new file mode 100644 index 00000000..5d80d336 --- /dev/null +++ b/src/Generator/Passes/CheckTypeReferencesPass.cs @@ -0,0 +1,22 @@ +namespace Cxxi.Passes +{ + public class CheckTypeReferencesPass : TranslationUnitPass + { + TypeRefsVisitor typeRefs; + + public override bool VisitTranslationUnit(TranslationUnit unit) + { + typeRefs = new TypeRefsVisitor(); + return typeRefs.VisitTranslationUnit(unit); + } + } + + public static class CheckTypeReferencesExtensions + { + public static void CheckTypeReferences(this PassBuilder builder) + { + var pass = new CheckTypeReferencesPass(); + builder.AddPass(pass); + } + } +} diff --git a/src/Generator/Passes/CleanInvalidDeclNamesPass.cs b/src/Generator/Passes/CleanInvalidDeclNamesPass.cs index 821ef050..6f8447a8 100644 --- a/src/Generator/Passes/CleanInvalidDeclNamesPass.cs +++ b/src/Generator/Passes/CleanInvalidDeclNamesPass.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; namespace Cxxi.Passes @@ -7,19 +6,9 @@ namespace Cxxi.Passes public class CleanInvalidDeclNamesPass : TranslationUnitPass { private int uniqueName; - private TypeRefsVisitor typeRefs; public CleanInvalidDeclNamesPass() { - typeRefs = new TypeRefsVisitor(); - } - - public override bool VisitTranslationUnit(TranslationUnit unit) - { - typeRefs = new TypeRefsVisitor(); - unit.TypeReferences = typeRefs; - - return base.VisitTranslationUnit(unit); } string CheckName(string name) @@ -39,7 +28,6 @@ namespace Cxxi.Passes public override bool VisitDeclaration(Declaration decl) { - typeRefs.Process(decl); decl.Name = CheckName(decl.Name); StringHelpers.CleanupText(ref decl.DebugText);