diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-08-10 17:30:20 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-08-11 15:25:17 +0200 |
commit | 1458476c4ee4bebf7645e6a74bb99c053b9ec742 (patch) | |
tree | 76792c05a784c8317a81c07adcfbb4872cebe1a1 /src/shared/cplusplus/TranslationUnit.cpp | |
parent | 91c909120b1c4200fd052d49b7341bb583bd4c75 (diff) | |
download | qt-creator-1458476c4ee4bebf7645e6a74bb99c053b9ec742.tar.gz |
Some cleanup in the diagnostic client.
Diffstat (limited to 'src/shared/cplusplus/TranslationUnit.cpp')
-rw-r--r-- | src/shared/cplusplus/TranslationUnit.cpp | 94 |
1 files changed, 35 insertions, 59 deletions
diff --git a/src/shared/cplusplus/TranslationUnit.cpp b/src/shared/cplusplus/TranslationUnit.cpp index 340b763fc5..380af92983 100644 --- a/src/shared/cplusplus/TranslationUnit.cpp +++ b/src/shared/cplusplus/TranslationUnit.cpp @@ -389,7 +389,7 @@ bool TranslationUnit::blockErrors(bool block) return previous; } -void TranslationUnit::warning(unsigned index, const char *format, ...) +void TranslationUnit::message(DiagnosticClient::Level level, unsigned index, const char *format, va_list args) { if (f._blockErrors) return; @@ -401,54 +401,50 @@ void TranslationUnit::warning(unsigned index, const char *format, ...) getTokenPosition(index, &line, &column, &fileName); if (DiagnosticClient *client = control()->diagnosticClient()) { - va_list args; - va_start(args, format); - client->report(DiagnosticClient::Warning, fileName, line, column, - format, args); - va_end(args); + client->report(level, fileName, line, column, format, args); } else { fprintf(stderr, "%s:%d: ", fileName->chars(), line); - fprintf(stderr, "warning: "); + const char *l = "error"; + if (level == DiagnosticClient::Warning) + l = "warning"; + else if (level == DiagnosticClient::Fatal) + l = "fatal"; + fprintf(stderr, "%s: ", l); - va_list args; - va_start(args, format); vfprintf(stderr, format, args); - va_end(args); fputc('\n', stderr); showErrorLine(index, column, stderr); } + + if (level == DiagnosticClient::Fatal) + exit(EXIT_FAILURE); } -void TranslationUnit::error(unsigned index, const char *format, ...) +void TranslationUnit::warning(unsigned index, const char *format, ...) { if (f._blockErrors) return; - index = std::min(index, tokenCount() - 1); - - unsigned line = 0, column = 0; - const StringLiteral *fileName = 0; - getTokenPosition(index, &line, &column, &fileName); - - if (DiagnosticClient *client = control()->diagnosticClient()) { - va_list args; - va_start(args, format); - client->report(DiagnosticClient::Error, fileName, line, column, - format, args); - va_end(args); - } else { - fprintf(stderr, "%s:%d: ", fileName->chars(), line); - fprintf(stderr, "error: "); + va_list args, ap; + va_start(args, format); + va_copy(ap, args); + message(DiagnosticClient::Fatal, index, format, args); + va_end(ap); + va_end(args); +} - va_list args; - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); - fputc('\n', stderr); +void TranslationUnit::error(unsigned index, const char *format, ...) +{ + if (f._blockErrors) + return; - showErrorLine(index, column, stderr); - } + va_list args, ap; + va_start(args, format); + va_copy(ap, args); + message(DiagnosticClient::Error, index, format, args); + va_end(ap); + va_end(args); } void TranslationUnit::fatal(unsigned index, const char *format, ...) @@ -456,32 +452,12 @@ void TranslationUnit::fatal(unsigned index, const char *format, ...) if (f._blockErrors) return; - index = std::min(index, tokenCount() - 1); - - unsigned line = 0, column = 0; - const StringLiteral *fileName = 0; - getTokenPosition(index, &line, &column, &fileName); - - if (DiagnosticClient *client = control()->diagnosticClient()) { - va_list args; - va_start(args, format); - client->report(DiagnosticClient::Fatal, fileName, line, column, - format, args); - va_end(args); - } else { - fprintf(stderr, "%s:%d: ", fileName->chars(), line); - fprintf(stderr, "fatal: "); - - va_list args; - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); - fputc('\n', stderr); - - showErrorLine(index, column, stderr); - } - - exit(EXIT_FAILURE); + va_list args, ap; + va_start(args, format); + va_copy(ap, args); + message(DiagnosticClient::Fatal, index, format, args); + va_end(ap); + va_end(args); } unsigned TranslationUnit::findPreviousLineOffset(unsigned tokenIndex) const |