Moved error-counting to Diagnostics so that errors generated during preprocessing is included in the count.
Enabled logging of preprocessor diagnostics into info-log.
Review URL: https://codereview.appspot.com/6354047
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1177 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/Diagnostics.cpp b/src/compiler/Diagnostics.cpp
index 5f93a03..8aa1cb6 100644
--- a/src/compiler/Diagnostics.cpp
+++ b/src/compiler/Diagnostics.cpp
@@ -6,10 +6,14 @@
#include "compiler/Diagnostics.h"
+#include "compiler/debug.h"
#include "compiler/InfoSink.h"
#include "compiler/preprocessor/new/SourceLocation.h"
-TDiagnostics::TDiagnostics(TInfoSink& infoSink) : mInfoSink(infoSink)
+TDiagnostics::TDiagnostics(TInfoSink& infoSink) :
+ mInfoSink(infoSink),
+ mNumErrors(0),
+ mNumWarnings(0)
{
}
@@ -23,9 +27,23 @@
const std::string& token,
const std::string& extra)
{
- TInfoSinkBase& sink = mInfoSink.info;
- TPrefixType prefix = severity == ERROR ? EPrefixError : EPrefixWarning;
+ TPrefixType prefix = EPrefixNone;
+ switch (severity)
+ {
+ case ERROR:
+ ++mNumErrors;
+ prefix = EPrefixError;
+ break;
+ case WARNING:
+ ++mNumWarnings;
+ prefix = EPrefixWarning;
+ break;
+ default:
+ UNREACHABLE();
+ break;
+ }
+ TInfoSinkBase& sink = mInfoSink.info;
/* VC++ format: file(linenum) : error #: 'token' : extrainfo */
sink.prefix(prefix);
sink.location(EncodeSourceLoc(loc.file, loc.line));
@@ -41,4 +59,5 @@
const pp::SourceLocation& loc,
const std::string& text)
{
+ writeInfo(severity(id), loc, message(id), text, "");
}