Browse Source

Clean up the contributed diagnostic code.

pull/1/head
triton 12 years ago
parent
commit
cb41f904e8
  1. 15
      src/Generator/Parser.cs
  2. 11
      src/Parser/Parser.cpp
  3. 6
      src/Parser/Parser.h

15
src/Generator/Parser.cs

@ -16,7 +16,7 @@ namespace Cxxi
public bool ParseHeaders(IEnumerable<string> headers) public bool ParseHeaders(IEnumerable<string> headers)
{ {
bool bHasErrors = false; bool hasErrors = false;
foreach (var header in headers) foreach (var header in headers)
{ {
var result = ParseHeader(header); var result = ParseHeader(header);
@ -26,16 +26,19 @@ namespace Cxxi
{ {
foreach (var diag in result.Diagnostics) foreach (var diag in result.Diagnostics)
{ {
if (diag.Level == ParserDiagnosticLevel.Error || diag.Level == ParserDiagnosticLevel.Fatal) if (diag.Level == ParserDiagnosticLevel.Error ||
diag.Level == ParserDiagnosticLevel.Fatal)
{ {
Console.WriteLine(String.Format("{0}({1},{2}): error: {3}", diag.FileName, diag.lineNumber, diag.columnNumber, diag.Message)); Console.WriteLine(string.Format("{0}({1},{2}): error: {3}",
bHasErrors = true; diag.FileName, diag.LineNumber, diag.ColumnNumber,
diag.Message));
hasErrors = true;
}
} }
} }
} //if
} }
return !bHasErrors; return !hasErrors;
} }
public ParserResult ParseHeader(string file) public ParserResult ParseHeader(string file)

11
src/Parser/Parser.cpp

@ -1638,19 +1638,16 @@ ParserResult^ Parser::Parse(const std::string& File)
auto PDiag = ParserDiagnostic(); auto PDiag = ParserDiagnostic();
PDiag.FileName = marshalString<E_UTF8>(FileName.str()); PDiag.FileName = marshalString<E_UTF8>(FileName.str());
PDiag.Message = marshalString<E_UTF8>(Diag.Message.str()); PDiag.Message = marshalString<E_UTF8>(Diag.Message.str());
PDiag.lineNumber = 0; PDiag.LineNumber = 0;
PDiag.columnNumber = 0; PDiag.ColumnNumber = 0;
//
// Idea copied from CGDebugInfo::getLineNumber
//
if( !Diag.Location.isInvalid() ) if( !Diag.Location.isInvalid() )
{ {
clang::PresumedLoc PLoc = Source.getPresumedLoc(Diag.Location); clang::PresumedLoc PLoc = Source.getPresumedLoc(Diag.Location);
if( PLoc.isValid() ) if( PLoc.isValid() )
{ {
PDiag.lineNumber = PLoc.getLine(); PDiag.LineNumber = PLoc.getLine();
PDiag.columnNumber = PLoc.getColumn(); PDiag.ColumnNumber = PLoc.getColumn();
} }
} }

6
src/Parser/Parser.h

@ -55,7 +55,6 @@ public ref struct ParserOptions
bool Verbose; bool Verbose;
}; };
public enum struct ParserDiagnosticLevel public enum struct ParserDiagnosticLevel
{ {
Ignored, Ignored,
@ -65,14 +64,13 @@ public enum struct ParserDiagnosticLevel
Fatal Fatal
}; };
public value struct ParserDiagnostic public value struct ParserDiagnostic
{ {
System::String^ FileName; System::String^ FileName;
int lineNumber;
int columnNumber;
System::String^ Message; System::String^ Message;
ParserDiagnosticLevel Level; ParserDiagnosticLevel Level;
int LineNumber;
int ColumnNumber;
}; };
public enum struct ParserResultKind public enum struct ParserResultKind

Loading…
Cancel
Save