clang 20.0.0git
|
#include "clang/Frontend/VerifyDiagnosticConsumer.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TokenKinds.h"
#include "clang/Frontend/FrontendDiagnostic.h"
#include "clang/Frontend/TextDiagnosticBuffer.h"
#include "clang/Lex/HeaderSearch.h"
#include "clang/Lex/Lexer.h"
#include "clang/Lex/PPCallbacks.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Lex/Token.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Regex.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
#include <cstring>
#include <iterator>
#include <memory>
#include <string>
#include <utility>
#include <vector>
Go to the source code of this file.
Classes | |
class | clang::VerifyDiagnosticConsumer::MarkerTracker |
Functions | |
static std::string | DetailedErrorString (const DiagnosticsEngine &Diags) |
static bool | ParseDirective (StringRef S, ExpectedData *ED, SourceManager &SM, Preprocessor *PP, SourceLocation Pos, VerifyDiagnosticConsumer::DirectiveStatus &Status, VerifyDiagnosticConsumer::MarkerTracker &Markers) |
ParseDirective - Go through the comment and see if it indicates expected diagnostics. | |
static bool | findDirectives (SourceManager &SM, FileID FID, const LangOptions &LangOpts) |
Lex the specified source file to determine whether it contains any expected-* directives. | |
static unsigned | PrintUnexpected (DiagnosticsEngine &Diags, SourceManager *SourceMgr, const_diag_iterator diag_begin, const_diag_iterator diag_end, const char *Kind) |
Takes a list of diagnostics that have been generated but not matched by an expected-* directive and produces a diagnostic to the user from this. | |
static unsigned | PrintExpected (DiagnosticsEngine &Diags, SourceManager &SourceMgr, std::vector< Directive * > &DL, const char *Kind) |
Takes a list of diagnostics that were expected to have been generated but were not and produces a diagnostic to the user from this. | |
static bool | IsFromSameFile (SourceManager &SM, SourceLocation DirectiveLoc, SourceLocation DiagnosticLoc) |
Determine whether two source locations come from the same file. | |
static unsigned | CheckLists (DiagnosticsEngine &Diags, SourceManager &SourceMgr, const char *Label, DirectiveList &Left, const_diag_iterator d2_begin, const_diag_iterator d2_end, bool IgnoreUnexpected) |
CheckLists - Compare expected to seen diagnostic lists and return the the difference between them. | |
static unsigned | CheckResults (DiagnosticsEngine &Diags, SourceManager &SourceMgr, const TextDiagnosticBuffer &Buffer, ExpectedData &ED) |
CheckResults - This compares the expected results to those that were actually reported. | |
Definition at line 84 of file VerifyDiagnosticConsumer.cpp.
Definition at line 83 of file VerifyDiagnosticConsumer.cpp.
Definition at line 49 of file VerifyDiagnosticConsumer.cpp.
Definition at line 50 of file VerifyDiagnosticConsumer.cpp.
Definition at line 51 of file VerifyDiagnosticConsumer.cpp.
|
static |
CheckLists - Compare expected to seen diagnostic lists and return the the difference between them.
Definition at line 948 of file VerifyDiagnosticConsumer.cpp.
References D, clang::SourceManager::getPresumedLineNumber(), IsFromSameFile(), Label, PrintExpected(), and PrintUnexpected().
Referenced by CheckResults().
|
static |
CheckResults - This compares the expected results to those that were actually reported.
It emits any discrepencies. Return "true" if there were problems. Return "false" otherwise.
Definition at line 998 of file VerifyDiagnosticConsumer.cpp.
References CheckLists(), clang::TextDiagnosticBuffer::err_begin(), clang::TextDiagnosticBuffer::err_end(), clang::Error, clang::VerifyDiagnosticConsumer::ExpectedData::Errors, clang::DiagnosticsEngine::getDiagnosticOptions(), clang::Note, clang::TextDiagnosticBuffer::note_begin(), clang::TextDiagnosticBuffer::note_end(), clang::VerifyDiagnosticConsumer::ExpectedData::Notes, clang::Remark, clang::TextDiagnosticBuffer::remark_begin(), clang::TextDiagnosticBuffer::remark_end(), clang::VerifyDiagnosticConsumer::ExpectedData::Remarks, clang::TextDiagnosticBuffer::warn_begin(), clang::TextDiagnosticBuffer::warn_end(), clang::Warning, and clang::VerifyDiagnosticConsumer::ExpectedData::Warnings.
|
static |
Definition at line 399 of file VerifyDiagnosticConsumer.cpp.
References clang::DiagnosticsEngine::getDiagnosticOptions(), and clang::DiagnosticOptions::VerifyPrefixes.
Referenced by ParseDirective().
|
static |
Lex the specified source file to determine whether it contains any expected-* directives.
As a Lexer is used rather than a full-blown Preprocessor, directives inside skipped if blocks will still be found.
Definition at line 831 of file VerifyDiagnosticConsumer.cpp.
References clang::Token::getLocation(), clang::Lexer::getSpelling(), clang::VerifyDiagnosticConsumer::HasNoDirectives, clang::Token::is(), clang::FileID::isInvalid(), clang::Token::isNot(), clang::Lexer::LexFromRawLexer(), ParseDirective(), clang::Lexer::SetCommentRetentionState(), clang::Token::setKind(), and SM.
Referenced by clang::VerifyDiagnosticConsumer::UpdateParsedFileStatus().
|
static |
Determine whether two source locations come from the same file.
Definition at line 931 of file VerifyDiagnosticConsumer.cpp.
References clang::SourceLocation::isMacroID(), and SM.
Referenced by CheckLists().
|
static |
ParseDirective - Go through the comment and see if it indicates expected diagnostics.
If so, then put them in the appropriate directive list.
Returns true if any valid directives were found.
Definition at line 409 of file VerifyDiagnosticConsumer.cpp.
References clang::VerifyDiagnosticConsumer::MarkerTracker::addDirective(), clang::VerifyDiagnosticConsumer::MarkerTracker::addMarker(), clang::SrcMgr::C_User, D, DetailedErrorString(), clang::DType, clang::VerifyDiagnosticConsumer::ExpectedData::Errors, clang::File, Filename, clang::DiagnosticsEngine::getDiagnosticOptions(), clang::Preprocessor::getDiagnostics(), clang::SourceLocation::getLocWithOffset(), clang::VerifyDiagnosticConsumer::HasExpectedNoDiagnostics, clang::VerifyDiagnosticConsumer::HasOtherExpectedDirectives, clang::Invalid, clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), clang::Preprocessor::LookupFile(), clang::VerifyDiagnosticConsumer::Directive::MaxCount, NoDiag(), clang::VerifyDiagnosticConsumer::ExpectedData::Notes, clang::VerifyDiagnosticConsumer::ExpectedData::Remarks, clang::DiagnosticsEngine::Report(), SM, clang::DiagnosticOptions::VerifyPrefixes, and clang::VerifyDiagnosticConsumer::ExpectedData::Warnings.
Referenced by findDirectives(), and clang::VerifyDiagnosticConsumer::HandleComment().
|
static |
Takes a list of diagnostics that were expected to have been generated but were not and produces a diagnostic to the user from this.
Definition at line 899 of file VerifyDiagnosticConsumer.cpp.
References D, clang::DiagnosticsEngine::getDiagnosticOptions(), clang::SourceManager::getFilename(), clang::SourceManager::getPresumedLineNumber(), clang::DiagnosticsEngine::Report(), clang::DiagnosticBuilder::setForceEmit(), and clang::DiagnosticOptions::VerifyPrefixes.
Referenced by CheckLists().
|
static |
Takes a list of diagnostics that have been generated but not matched by an expected-* directive and produces a diagnostic to the user from this.
Definition at line 869 of file VerifyDiagnosticConsumer.cpp.
References E, clang::File, clang::DiagnosticsEngine::getDiagnosticOptions(), clang::SourceManager::getFileEntryRefForID(), clang::SourceManager::getFileID(), clang::SourceManager::getPresumedLineNumber(), clang::DiagnosticsEngine::Report(), clang::DiagnosticBuilder::setForceEmit(), and clang::DiagnosticOptions::VerifyPrefixes.
Referenced by CheckLists().