clang 20.0.0git
|
VerifyDiagnosticConsumer - Create a diagnostic client which will use markers in the input source to check that all the emitted diagnostics match those expected. More...
#include "clang/Frontend/VerifyDiagnosticConsumer.h"
Classes | |
class | Directive |
Directive - Abstract class representing a parsed verify directive. More... | |
struct | ExpectedData |
ExpectedData - owns directive objects and deletes on destructor. More... | |
class | MarkerTracker |
Public Types | |
enum | DirectiveStatus { HasNoDirectives , HasNoDirectivesReported , HasExpectedNoDiagnostics , HasOtherExpectedDirectives } |
enum | ParsedStatus { IsParsed , IsUnparsed , IsUnparsedNoDirectives } |
using | DirectiveList = std::vector< std::unique_ptr< Directive > > |
Public Member Functions | |
VerifyDiagnosticConsumer (DiagnosticsEngine &Diags) | |
Create a new verifying diagnostic client, which will issue errors to the currently-attached diagnostic client when a diagnostic does not match what is expected (as indicated in the source file). | |
~VerifyDiagnosticConsumer () override | |
void | BeginSourceFile (const LangOptions &LangOpts, const Preprocessor *PP) override |
Callback to inform the diagnostic client that processing of a source file is beginning. | |
void | EndSourceFile () override |
Callback to inform the diagnostic client that processing of a source file has ended. | |
void | UpdateParsedFileStatus (SourceManager &SM, FileID FID, ParsedStatus PS) |
Update lists of parsed and unparsed files. | |
bool | HandleComment (Preprocessor &PP, SourceRange Comment) override |
HandleComment - Hook into the preprocessor and extract comments containing expected errors and warnings. | |
void | HandleDiagnostic (DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) override |
Handle this diagnostic, reporting it to the user or capturing it to a log as needed. | |
Public Member Functions inherited from clang::DiagnosticConsumer | |
DiagnosticConsumer ()=default | |
virtual | ~DiagnosticConsumer () |
unsigned | getNumErrors () const |
unsigned | getNumWarnings () const |
virtual void | clear () |
virtual void | BeginSourceFile (const LangOptions &LangOpts, const Preprocessor *PP=nullptr) |
Callback to inform the diagnostic client that processing of a source file is beginning. | |
virtual void | EndSourceFile () |
Callback to inform the diagnostic client that processing of a source file has ended. | |
virtual void | finish () |
Callback to inform the diagnostic client that processing of all source files has ended. | |
virtual bool | IncludeInDiagnosticCounts () const |
Indicates whether the diagnostics handled by this DiagnosticConsumer should be included in the number of diagnostics reported by DiagnosticsEngine. | |
virtual void | HandleDiagnostic (DiagnosticsEngine::Level DiagLevel, const Diagnostic &Info) |
Handle this diagnostic, reporting it to the user or capturing it to a log as needed. | |
Public Member Functions inherited from clang::CommentHandler | |
virtual | ~CommentHandler () |
virtual bool | HandleComment (Preprocessor &PP, SourceRange Comment)=0 |
Additional Inherited Members | |
Protected Attributes inherited from clang::DiagnosticConsumer | |
unsigned | NumWarnings = 0 |
Number of warnings reported. | |
unsigned | NumErrors = 0 |
Number of errors reported. | |
VerifyDiagnosticConsumer - Create a diagnostic client which will use markers in the input source to check that all the emitted diagnostics match those expected.
See clang/docs/InternalsManual.rst for details about how to write tests to verify diagnostics.
Definition at line 38 of file VerifyDiagnosticConsumer.h.
using clang::VerifyDiagnosticConsumer::DirectiveList = std::vector<std::unique_ptr<Directive> > |
Definition at line 85 of file VerifyDiagnosticConsumer.h.
Enumerator | |
---|---|
HasNoDirectives | |
HasNoDirectivesReported | |
HasExpectedNoDiagnostics | |
HasOtherExpectedDirectives |
Definition at line 102 of file VerifyDiagnosticConsumer.h.
Enumerator | |
---|---|
IsParsed | File has been processed via HandleComment. |
IsUnparsed | File has diagnostics and may have directives. |
IsUnparsedNoDirectives | File has diagnostics but guaranteed no directives. |
Definition at line 162 of file VerifyDiagnosticConsumer.h.
VerifyDiagnosticConsumer::VerifyDiagnosticConsumer | ( | DiagnosticsEngine & | Diags | ) |
Create a new verifying diagnostic client, which will issue errors to the currently-attached diagnostic client when a diagnostic does not match what is expected (as indicated in the source file).
Definition at line 669 of file VerifyDiagnosticConsumer.cpp.
References clang::DiagnosticsEngine::getSourceManager(), and clang::DiagnosticsEngine::hasSourceManager().
|
override |
Definition at line 678 of file VerifyDiagnosticConsumer.cpp.
References clang::DiagnosticsEngine::ownsClient().
|
overridevirtual |
Callback to inform the diagnostic client that processing of a source file is beginning.
Note that diagnostics may be emitted outside the processing of a source file, for example during the parsing of command line options. However, diagnostics with source range information are required to only be emitted in between BeginSourceFile() and EndSourceFile().
LangOpts | The language options for the source file being processed. |
PP | The preprocessor object being used for the source; this is optional, e.g., it may not be present when processing AST source files. |
Reimplemented from clang::DiagnosticConsumer.
Definition at line 689 of file VerifyDiagnosticConsumer.cpp.
References clang::DiagnosticConsumer::BeginSourceFile(), and clang::Preprocessor::getSourceManager().
|
overridevirtual |
Callback to inform the diagnostic client that processing of a source file has ended.
The diagnostic client should assume that any objects made available via BeginSourceFile() are inaccessible.
Reimplemented from clang::DiagnosticConsumer.
Definition at line 710 of file VerifyDiagnosticConsumer.cpp.
References clang::DiagnosticConsumer::EndSourceFile().
|
overridevirtual |
HandleComment - Hook into the preprocessor and extract comments containing expected errors and warnings.
Implements clang::CommentHandler.
Definition at line 772 of file VerifyDiagnosticConsumer.cpp.
References clang::C, clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), clang::Preprocessor::getSourceManager(), ParseDirective(), and SM.
|
overridevirtual |
Handle this diagnostic, reporting it to the user or capturing it to a log as needed.
The default implementation just keeps track of the total number of warnings and errors.
Reimplemented from clang::DiagnosticConsumer.
Definition at line 730 of file VerifyDiagnosticConsumer.cpp.
References clang::HeaderSearch::findModuleForHeader(), clang::SourceManager::getExpansionLoc(), clang::SourceManager::getFileEntryRefForID(), clang::SourceManager::getFileID(), clang::Preprocessor::getHeaderSearchInfo(), clang::Diagnostic::getLocation(), clang::Diagnostic::getSourceManager(), clang::Diagnostic::hasSourceManager(), clang::SourceManager::isLoadedFileID(), IsUnparsed, IsUnparsedNoDirectives, clang::SourceLocation::isValid(), Loc, and UpdateParsedFileStatus().
void VerifyDiagnosticConsumer::UpdateParsedFileStatus | ( | SourceManager & | SM, |
FileID | FID, | ||
ParsedStatus | PS | ||
) |
Update lists of parsed and unparsed files.
Definition at line 1034 of file VerifyDiagnosticConsumer.cpp.
References findDirectives(), clang::FileEntryRef::getFileEntry(), clang::FileID::isInvalid(), IsParsed, IsUnparsedNoDirectives, and SM.
Referenced by HandleDiagnostic().