From b65ae11a5c80d74177363f7f695087d46e02976a Mon Sep 17 00:00:00 2001 From: triton Date: Sat, 17 Aug 2013 02:24:40 +0100 Subject: [PATCH] Fixed FindSymbolsPass to not ignore declarations in CLI generator. --- src/Generator/Passes/FindSymbolsPass.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Generator/Passes/FindSymbolsPass.cs b/src/Generator/Passes/FindSymbolsPass.cs index 38ac30e8..93500bf3 100644 --- a/src/Generator/Passes/FindSymbolsPass.cs +++ b/src/Generator/Passes/FindSymbolsPass.cs @@ -6,26 +6,34 @@ namespace CppSharp.Passes { public override bool VisitDeclaration(Declaration decl) { - if (!Driver.Options.CheckSymbols) + var mangledDecl = decl as IMangledDecl; + if (mangledDecl == null) return false; - var mangledDecl = decl as IMangledDecl; - if (mangledDecl != null && !VisitMangledDeclaration(mangledDecl)) + var options = Driver.Options; + if (!options.CheckSymbols || options.IsCLIGenerator) + return false; + + if (!VisitMangledDeclaration(mangledDecl)) { decl.ExplicityIgnored = true; return false; } + return base.VisitDeclaration(decl); } private bool VisitMangledDeclaration(IMangledDecl mangledDecl) { var symbol = mangledDecl.Mangled; + if (!Driver.LibrarySymbols.FindSymbol(ref symbol)) { - Driver.Diagnostics.EmitWarning(DiagnosticId.SymbolNotFound, "Symbol not found: {0}", symbol); + Driver.Diagnostics.EmitWarning(DiagnosticId.SymbolNotFound, + "Symbol not found: {0}", symbol); return false; } + mangledDecl.Mangled = symbol; return true; }