diff --git a/src/AST/ASTContext.cs b/src/AST/ASTContext.cs index 8ad4c139..fadbcf47 100644 --- a/src/AST/ASTContext.cs +++ b/src/AST/ASTContext.cs @@ -27,14 +27,17 @@ namespace CppSharp.AST /// Finds an existing module or creates a new one given a file path. public TranslationUnit FindOrCreateModule(string file) { - try + if (!file.StartsWith("<")) { - file = Path.GetFullPath(file); - } - catch (ArgumentException) - { - // Normalization errors are expected when dealing with virtual - // compiler files like . + try + { + file = Path.GetFullPath(file); + } + catch (ArgumentException) + { + // Normalization errors are expected when dealing with virtual + // compiler files like . + } } var module = TranslationUnits.Find(m => m.FilePath.Equals(file)); diff --git a/src/Core/Diagnostics.cs b/src/Core/Diagnostics.cs index 9c92a7a5..302d6229 100644 --- a/src/Core/Diagnostics.cs +++ b/src/Core/Diagnostics.cs @@ -129,12 +129,12 @@ namespace CppSharp } public static void EmitError(this IDiagnosticConsumer consumer, - string msg, params object[] args) + string msg) { var diagInfo = new DiagnosticInfo { Kind = DiagnosticKind.Error, - Message = string.Format(msg, args) + Message = msg }; consumer.Emit(diagInfo); diff --git a/src/Generator/Driver.cs b/src/Generator/Driver.cs index e1467049..5f095696 100644 --- a/src/Generator/Driver.cs +++ b/src/Generator/Driver.cs @@ -338,47 +338,39 @@ namespace CppSharp public void CompileCode() { - try - { - var assemblyFile = string.IsNullOrEmpty(Options.LibraryName) ? - "out.dll" : Options.LibraryName + ".dll"; - - var docFile = Path.ChangeExtension(Path.GetFileName(assemblyFile), ".xml"); - - var compilerOptions = new StringBuilder(); - compilerOptions.Append(" /doc:" + docFile); - compilerOptions.Append(" /debug:pdbonly"); - compilerOptions.Append(" /unsafe"); - - var compilerParameters = new CompilerParameters - { - GenerateExecutable = false, - TreatWarningsAsErrors = false, - OutputAssembly = assemblyFile, - GenerateInMemory = false, - CompilerOptions = compilerOptions.ToString() - }; - - compilerParameters.ReferencedAssemblies.Add(typeof (object).Assembly.Location); - var location = Assembly.GetExecutingAssembly().Location; - var locationRuntime = Path.Combine(Path.GetDirectoryName(location), - "CppSharp.Runtime.dll"); - compilerParameters.ReferencedAssemblies.Add(locationRuntime); - - var codeProvider = new CSharpCodeProvider( - new Dictionary {{"CompilerVersion", "v4.0"}}); - var compilerResults = codeProvider.CompileAssemblyFromFile( - compilerParameters, Options.CodeFiles.ToArray()); - - var errors = compilerResults.Errors.Cast(); - foreach (var error in errors.Where(error => !error.IsWarning)) - Diagnostics.EmitError(error.ToString()); - } - catch (Exception exception) - { - Diagnostics.EmitError("Could not compile the generated source code"); - Diagnostics.EmitMessage(exception.ToString()); - } + var assemblyFile = string.IsNullOrEmpty(Options.LibraryName) ? + "out.dll" : Options.LibraryName + ".dll"; + + var docFile = Path.ChangeExtension(Path.GetFileName(assemblyFile), ".xml"); + + var compilerOptions = new StringBuilder(); + compilerOptions.Append(" /doc:" + docFile); + compilerOptions.Append(" /debug:pdbonly"); + compilerOptions.Append(" /unsafe"); + + var compilerParameters = new CompilerParameters + { + GenerateExecutable = false, + TreatWarningsAsErrors = false, + OutputAssembly = assemblyFile, + GenerateInMemory = false, + CompilerOptions = compilerOptions.ToString() + }; + + compilerParameters.ReferencedAssemblies.Add(typeof (object).Assembly.Location); + var location = Assembly.GetExecutingAssembly().Location; + var locationRuntime = Path.Combine(Path.GetDirectoryName(location), + "CppSharp.Runtime.dll"); + compilerParameters.ReferencedAssemblies.Add(locationRuntime); + + var codeProvider = new CSharpCodeProvider( + new Dictionary {{"CompilerVersion", "v4.0"}}); + var compilerResults = codeProvider.CompileAssemblyFromFile( + compilerParameters, Options.CodeFiles.ToArray()); + + var errors = compilerResults.Errors.Cast(); + foreach (var error in errors.Where(error => !error.IsWarning)) + Diagnostics.EmitError(error.ToString()); } public void AddTranslationUnitPass(TranslationUnitPass pass)