diff --git a/src/Generator/Passes/CleanInvalidDeclNamesPass.cs b/src/Generator/Passes/CleanInvalidDeclNamesPass.cs index 2b1d74d0..dbd2a9f9 100644 --- a/src/Generator/Passes/CleanInvalidDeclNamesPass.cs +++ b/src/Generator/Passes/CleanInvalidDeclNamesPass.cs @@ -10,6 +10,15 @@ namespace CppSharp.Passes { public class CleanInvalidDeclNamesPass : TranslationUnitPass { + public override bool VisitASTContext(ASTContext context) + { + // TODO: Fix this to not need per-generator code. + generator = Options.IsCLIGenerator ? + new CLIHeaders(Context, new List()) : + (CodeGenerator) new CSharpSources(Context); + return base.VisitASTContext(context); + } + public override bool VisitClassDecl(Class @class) { if (!base.VisitClassDecl(@class)) @@ -129,13 +138,10 @@ namespace CppSharp.Passes if (char.IsNumber(name[0])) return '_' + name; - // TODO: Fix this to not need per-generator code. - var units = new List { new TranslationUnit() }; - if (Options.IsCLIGenerator) - return new CLIHeaders(Context, units).SafeIdentifier(name); - - return new CSharpSources(Context, units).SafeIdentifier(name); + return generator.SafeIdentifier(name); } + + private CodeGenerator generator; } }