Browse Source

Improved the feedback when auto-compiling.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/593/head
Dimitar Dobrev 10 years ago
parent
commit
67e14e7171
  1. 19
      src/Generator/Driver.cs

19
src/Generator/Driver.cs

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
using System;
using System.CodeDom.Compiler;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
@ -33,6 +32,8 @@ namespace CppSharp @@ -33,6 +32,8 @@ namespace CppSharp
public ASTContext ASTContext { get; private set; }
public SymbolContext Symbols { get; private set; }
public bool HasCompilationErrors { get; set; }
private static readonly Dictionary<string, string> libraryMappings = new Dictionary<string, string>();
public Driver(DriverOptions options, IDiagnosticConsumer diagnostics)
@ -398,6 +399,7 @@ namespace CppSharp @@ -398,6 +399,7 @@ namespace CppSharp
!compilerParameters.ReferencedAssemblies.Contains(libraryMappings[d]))
.Select(l => libraryMappings[l])).ToArray());
Diagnostics.Message("Compiling generated code...");
CompilerResults compilerResults;
using (var codeProvider = new CSharpCodeProvider(
new Dictionary<string, string> { { "CompilerVersion", "v4.0" } }))
@ -405,17 +407,22 @@ namespace CppSharp @@ -405,17 +407,22 @@ namespace CppSharp
compilerResults = codeProvider.CompileAssemblyFromDom(
compilerParameters, compileUnits.ToArray());
}
var errors = compilerResults.Errors.Cast<CompilerError>();
foreach (var error in errors.Where(error => !error.IsWarning))
var errors = compilerResults.Errors.Cast<CompilerError>().Where(e => !e.IsWarning).ToList();
foreach (var error in errors)
Diagnostics.Error(error.ToString());
if (compilerResults.Errors.Count == 0)
if (errors.Count == 0)
{
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)

Loading…
Cancel
Save