diff options
author | Jean-Luc Brouillet <jeanluc@google.com> | 2015-06-14 09:37:33 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-14 09:37:34 +0000 |
commit | b2f95965a51a8c891e17f9d55aabb1ee990b5065 (patch) | |
tree | 36cf923937e843026ea9dac638878fe6ed2dcff8 /slang_diagnostic_buffer.cpp | |
parent | 7332039f270d68c6e82012875833d9fe5e76ee66 (diff) | |
parent | 666b0a7711c10ea31008302495c6b25d1bd0729b (diff) | |
download | android_frameworks_compile_slang-b2f95965a51a8c891e17f9d55aabb1ee990b5065.tar.gz android_frameworks_compile_slang-b2f95965a51a8c891e17f9d55aabb1ee990b5065.tar.bz2 android_frameworks_compile_slang-b2f95965a51a8c891e17f9d55aabb1ee990b5065.zip |
Merge "Enable warnings in llvm_rs_cc" into mnc-dev
Diffstat (limited to 'slang_diagnostic_buffer.cpp')
-rw-r--r-- | slang_diagnostic_buffer.cpp | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/slang_diagnostic_buffer.cpp b/slang_diagnostic_buffer.cpp index 5b7adaf..d6afabf 100644 --- a/slang_diagnostic_buffer.cpp +++ b/slang_diagnostic_buffer.cpp @@ -29,12 +29,6 @@ DiagnosticBuffer::DiagnosticBuffer() : mSOS(new llvm::raw_string_ostream(mDiags)) { } -DiagnosticBuffer::DiagnosticBuffer(DiagnosticBuffer const &src) - : clang::DiagnosticConsumer(src), - mDiags(src.mDiags), - mSOS(new llvm::raw_string_ostream(mDiags)) { -} - DiagnosticBuffer::~DiagnosticBuffer() { } @@ -43,43 +37,45 @@ void DiagnosticBuffer::HandleDiagnostic( clang::Diagnostic const &Info) { clang::SourceLocation const &SrcLoc = Info.getLocation(); - // 100 is enough for storing general diagnosis message - llvm::SmallString<100> Buf; + std::string Message; + llvm::raw_string_ostream stream(Message); if (SrcLoc.isValid()) { - SrcLoc.print(*mSOS, Info.getSourceManager()); - (*mSOS) << ": "; + SrcLoc.print(stream, Info.getSourceManager()); + stream << ": "; } switch (DiagLevel) { case clang::DiagnosticsEngine::Note: { - (*mSOS) << "note: "; + stream << "note: "; break; } case clang::DiagnosticsEngine::Warning: { - (*mSOS) << "warning: "; + stream << "warning: "; break; } case clang::DiagnosticsEngine::Error: { - (*mSOS) << "error: "; + stream << "error: "; break; } case clang::DiagnosticsEngine::Fatal: { - (*mSOS) << "fatal: "; + stream << "fatal: "; break; } default: { slangAssert(0 && "Diagnostic not handled during diagnostic buffering!"); } } - + // 100 is enough for storing general diagnosis Message + llvm::SmallString<100> Buf; Info.FormatDiagnostic(Buf); - (*mSOS) << Buf.str() << '\n'; -} + stream << Buf.str() << '\n'; + stream.flush(); -clang::DiagnosticConsumer * -DiagnosticBuffer::clone(clang::DiagnosticsEngine &Diags) const { - return new DiagnosticBuffer(*this); + if (mIncludedMessages.find(Message) == mIncludedMessages.end()) { + mIncludedMessages.insert(Message); + (*mSOS) << Message; + } } } // namespace slang |