diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index 6261f569..3689a38e 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -318,7 +318,7 @@ namespace CppSharp return Generator.Generate(); } - public void WriteCode(List outputs) + public void SaveCode(List outputs) { var outputPath = Path.GetFullPath(Options.OutputDir); @@ -363,9 +363,6 @@ namespace CppSharp public void CompileCode() { - if (!Options.CompileCode) - return; - var assemblyFile = string.IsNullOrEmpty(Options.LibraryName) ? "out.dll" : Options.LibraryName + ".dll"; @@ -407,22 +404,19 @@ namespace CppSharp compilerResults = codeProvider.CompileAssemblyFromDom( compilerParameters, compileUnits.ToArray()); } - + var errors = compilerResults.Errors.Cast().Where(e => !e.IsWarning).ToList(); foreach (var error in errors) Diagnostics.Error(error.ToString()); - if (errors.Count == 0) + HasCompilationErrors = errors.Count > 0; + if (!HasCompilationErrors) { Diagnostics.Message("Compilation succeeded."); var wrapper = Path.Combine(outputDir, assemblyFile); foreach (var library in Options.Libraries) libraryMappings[library] = wrapper; } - else - { - HasCompilationErrors = true; - } } public void AddTranslationUnitPass(TranslationUnitPass pass) @@ -497,10 +491,11 @@ namespace CppSharp } if (!driver.Options.DryRun) - driver.WriteCode(outputs); - - if (driver.Options.IsCSharpGenerator) - driver.CompileCode(); + { + driver.SaveCode(outputs); + if (driver.Options.IsCSharpGenerator && driver.Options.CompileCode) + driver.CompileCode(); + } } } } \ No newline at end of file