Browse Source

Fixed parser diagnostic processing.

pull/68/merge
triton 13 years ago
parent
commit
ccecf5178a
  1. 11
      src/Parser/Parser.cpp

11
src/Parser/Parser.cpp

@ -2084,6 +2084,13 @@ struct DiagnosticConsumer : public clang::DiagnosticConsumer
virtual void HandleDiagnostic(clang::DiagnosticsEngine::Level Level, virtual void HandleDiagnostic(clang::DiagnosticsEngine::Level Level,
const clang::Diagnostic& Info) override { const clang::Diagnostic& Info) override {
// Update the base type NumWarnings and NumErrors variables.
if (Level == clang::DiagnosticsEngine::Warning)
NumWarnings++;
if (Level == clang::DiagnosticsEngine::Error || clang::DiagnosticsEngine::Fatal)
NumErrors++;
auto Diag = Diagnostic(); auto Diag = Diagnostic();
Diag.Location = Info.getLocation(); Diag.Location = Info.getLocation();
Diag.Level = Level; Diag.Level = Level;
@ -2195,7 +2202,9 @@ ParserResult^ Parser::ParseHeader(const std::string& File)
client->EndSourceFile(); client->EndSourceFile();
if(C->getDiagnosticClient().getNumErrors() != 0) HandleDiagnostics(res);
if(client->getNumErrors() != 0)
{ {
res->Kind = ParserResultKind::Error; res->Kind = ParserResultKind::Error;
return res; return res;

Loading…
Cancel
Save