From bafbbaf90b8854a5abe7693234064f15c69e2e27 Mon Sep 17 00:00:00 2001 From: triton Date: Mon, 11 Mar 2013 03:02:58 +0000 Subject: [PATCH] Added a new pass to check for type references. --- src/Generator/Driver.cs | 1 + .../Passes/CheckTypeReferencesPass.cs | 22 +++++++++++++++++++ .../Passes/CleanInvalidDeclNamesPass.cs | 12 ---------- 3 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 src/Generator/Passes/CheckTypeReferencesPass.cs 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);