clang 20.0.0git
Public Member Functions | List of all members
clang::Diagnostic Class Reference

A little helper class (which is basically a smart pointer that forwards info from DiagnosticsEngine and DiagnosticStorage) that allows clients to enquire about the diagnostic. More...

#include "clang/Basic/Diagnostic.h"

Public Member Functions

 Diagnostic (const DiagnosticsEngine *DO, const DiagnosticBuilder &DiagBuilder)
 
 Diagnostic (const DiagnosticsEngine *DO, SourceLocation DiagLoc, unsigned DiagID, const DiagnosticStorage &DiagStorage, StringRef StoredDiagMessage)
 
const DiagnosticsEnginegetDiags () const
 
unsigned getID () const
 
const SourceLocationgetLocation () const
 
bool hasSourceManager () const
 
SourceManagergetSourceManager () const
 
unsigned getNumArgs () const
 
DiagnosticsEngine::ArgumentKind getArgKind (unsigned Idx) const
 Return the kind of the specified index.
 
const std::string & getArgStdStr (unsigned Idx) const
 Return the provided argument string specified by Idx.
 
const char * getArgCStr (unsigned Idx) const
 Return the specified C string argument.
 
int64_t getArgSInt (unsigned Idx) const
 Return the specified signed integer argument.
 
uint64_t getArgUInt (unsigned Idx) const
 Return the specified unsigned integer argument.
 
const IdentifierInfogetArgIdentifier (unsigned Idx) const
 Return the specified IdentifierInfo argument.
 
uint64_t getRawArg (unsigned Idx) const
 Return the specified non-string argument in an opaque form.
 
unsigned getNumRanges () const
 Return the number of source ranges associated with this diagnostic.
 
const CharSourceRangegetRange (unsigned Idx) const
 
ArrayRef< CharSourceRangegetRanges () const
 Return an array reference for this diagnostic's ranges.
 
unsigned getNumFixItHints () const
 
const FixItHintgetFixItHint (unsigned Idx) const
 
ArrayRef< FixItHintgetFixItHints () const
 
StringRef getFlagValue () const
 Return the value associated with this diagnostic flag.
 
void FormatDiagnostic (SmallVectorImpl< char > &OutStr) const
 Format this diagnostic into a string, substituting the formal arguments into the %0 slots.
 
void FormatDiagnostic (const char *DiagStr, const char *DiagEnd, SmallVectorImpl< char > &OutStr) const
 Format the given format-string into the output buffer using the arguments stored in this diagnostic.
 

Detailed Description

A little helper class (which is basically a smart pointer that forwards info from DiagnosticsEngine and DiagnosticStorage) that allows clients to enquire about the diagnostic.

Definition at line 1512 of file Diagnostic.h.

Constructor & Destructor Documentation

◆ Diagnostic() [1/2]

Diagnostic::Diagnostic ( const DiagnosticsEngine DO,
const DiagnosticBuilder DiagBuilder 
)

Definition at line 697 of file Diagnostic.cpp.

◆ Diagnostic() [2/2]

Diagnostic::Diagnostic ( const DiagnosticsEngine DO,
SourceLocation  DiagLoc,
unsigned  DiagID,
const DiagnosticStorage DiagStorage,
StringRef  StoredDiagMessage 
)

Definition at line 703 of file Diagnostic.cpp.

Member Function Documentation

◆ FormatDiagnostic() [1/2]

void Diagnostic::FormatDiagnostic ( const char *  DiagStr,
const char *  DiagEnd,
SmallVectorImpl< char > &  OutStr 
) const

Format the given format-string into the output buffer using the arguments stored in this diagnostic.

FormattedArgs - Keep track of all of the arguments formatted by ConvertArgToString and pass them into subsequent calls to ConvertArgToString, allowing the implementation to avoid redundancies in obvious cases.

QualTypeVals - Pass a vector of arrays so that QualType names can be compared to see if more information is needed to be printed.

Definition at line 1028 of file Diagnostic.cpp.

References clang::DiagnosticsEngine::ak_addrspace, clang::DiagnosticsEngine::ak_attr, clang::DiagnosticsEngine::ak_c_string, clang::DiagnosticsEngine::ak_declarationname, clang::DiagnosticsEngine::ak_declcontext, clang::DiagnosticsEngine::ak_identifierinfo, clang::DiagnosticsEngine::ak_nameddecl, clang::DiagnosticsEngine::ak_nestednamespec, clang::DiagnosticsEngine::ak_qual, clang::DiagnosticsEngine::ak_qualtype, clang::DiagnosticsEngine::ak_qualtype_pair, clang::DiagnosticsEngine::ak_sint, clang::DiagnosticsEngine::ak_std_string, clang::DiagnosticsEngine::ak_tokenkind, clang::DiagnosticsEngine::ak_uint, clang::DiagnosticsEngine::ConvertArgToString(), clang::TemplateDiffTypes::ElideType, clang::EscapeStringForDiagnostic(), FormatDiagnostic(), clang::TemplateDiffTypes::FromType, getArgCStr(), getArgIdentifier(), getArgKind(), getArgSInt(), getArgStdStr(), getArgUInt(), getDiags(), clang::tok::getKeywordSpelling(), clang::IdentifierInfo::getName(), getNumArgs(), clang::tok::getPunctuatorSpelling(), getRawArg(), getTokenDescForDiagnostic(), clang::tok::getTokenName(), HandleIntegerHumanModifier(), HandleIntegerSModifier(), HandleOrdinalModifier(), HandlePluralModifier(), HandleSelectModifier(), clang::isDigit(), clang::isPunctuation(), ModifierIs(), clang::Pipe, clang::TemplateDiffTypes::PrintFromType, clang::TemplateDiffTypes::PrintTree, ScanFormat(), clang::TemplateDiffTypes::ShowColors, clang::TemplateDiffTypes::TemplateDiffUsed, clang::TemplateDiffTypes::ToType, and Tree.

◆ FormatDiagnostic() [2/2]

void Diagnostic::FormatDiagnostic ( SmallVectorImpl< char > &  OutStr) const

Format this diagnostic into a string, substituting the formal arguments into the %0 slots.

FormatDiagnostic - Format this diagnostic into a string, substituting the formal arguments into the %0 slots.

The result is appended onto the OutStr array.

The result is appended onto the Str array.

Definition at line 970 of file Diagnostic.cpp.

References Diag(), FormatDiagnostic(), clang::DiagnosticsEngine::getDiagnosticIDs(), getDiags(), and getID().

Referenced by clang::PartialDiagnostic::EmitToString(), FormatDiagnostic(), clang::LogDiagnosticPrinter::HandleDiagnostic(), clang::TextDiagnosticBuffer::HandleDiagnostic(), clang::format::FatalDiagnosticConsumer::HandleDiagnostic(), clang::SARIFDiagnosticPrinter::HandleDiagnostic(), clang::TextDiagnosticPrinter::HandleDiagnostic(), HandlePluralModifier(), HandleSelectModifier(), and clang::StoredDiagnostic::StoredDiagnostic().

◆ getArgCStr()

const char * clang::Diagnostic::getArgCStr ( unsigned  Idx) const
inline

Return the specified C string argument.

Precondition
getArgKind(Idx) == DiagnosticsEngine::ak_c_string

Definition at line 1555 of file Diagnostic.h.

References clang::DiagnosticsEngine::ak_c_string, clang::DiagnosticStorage::DiagArgumentsVal, and getArgKind().

Referenced by FormatDiagnostic().

◆ getArgIdentifier()

const IdentifierInfo * clang::Diagnostic::getArgIdentifier ( unsigned  Idx) const
inline

Return the specified IdentifierInfo argument.

Precondition
getArgKind(Idx) == DiagnosticsEngine::ak_identifierinfo

Definition at line 1579 of file Diagnostic.h.

References clang::DiagnosticsEngine::ak_identifierinfo, clang::DiagnosticStorage::DiagArgumentsVal, and getArgKind().

Referenced by FormatDiagnostic().

◆ getArgKind()

DiagnosticsEngine::ArgumentKind clang::Diagnostic::getArgKind ( unsigned  Idx) const
inline

Return the kind of the specified index.

Based on the kind of argument, the accessors below can be used to get the value.

Precondition
Idx < getNumArgs()

Definition at line 1540 of file Diagnostic.h.

References clang::DiagnosticStorage::DiagArgumentsKind, and getNumArgs().

Referenced by FormatDiagnostic(), getArgCStr(), getArgIdentifier(), getArgSInt(), getArgStdStr(), getArgUInt(), and getRawArg().

◆ getArgSInt()

int64_t clang::Diagnostic::getArgSInt ( unsigned  Idx) const
inline

Return the specified signed integer argument.

Precondition
getArgKind(Idx) == DiagnosticsEngine::ak_sint

Definition at line 1563 of file Diagnostic.h.

References clang::DiagnosticsEngine::ak_sint, clang::DiagnosticStorage::DiagArgumentsVal, and getArgKind().

Referenced by FormatDiagnostic().

◆ getArgStdStr()

const std::string & clang::Diagnostic::getArgStdStr ( unsigned  Idx) const
inline

Return the provided argument string specified by Idx.

Precondition
getArgKind(Idx) == DiagnosticsEngine::ak_std_string

Definition at line 1547 of file Diagnostic.h.

References clang::DiagnosticsEngine::ak_std_string, clang::DiagnosticStorage::DiagArgumentsStr, and getArgKind().

Referenced by FormatDiagnostic().

◆ getArgUInt()

uint64_t clang::Diagnostic::getArgUInt ( unsigned  Idx) const
inline

Return the specified unsigned integer argument.

Precondition
getArgKind(Idx) == DiagnosticsEngine::ak_uint

Definition at line 1571 of file Diagnostic.h.

References clang::DiagnosticsEngine::ak_uint, clang::DiagnosticStorage::DiagArgumentsVal, and getArgKind().

Referenced by FormatDiagnostic().

◆ getDiags()

const DiagnosticsEngine * clang::Diagnostic::getDiags ( ) const
inline

Definition at line 1526 of file Diagnostic.h.

Referenced by FormatDiagnostic().

◆ getFixItHint()

const FixItHint & clang::Diagnostic::getFixItHint ( unsigned  Idx) const
inline

◆ getFixItHints()

ArrayRef< FixItHint > clang::Diagnostic::getFixItHints ( ) const
inline

◆ getFlagValue()

StringRef clang::Diagnostic::getFlagValue ( ) const
inline

Return the value associated with this diagnostic flag.

Definition at line 1616 of file Diagnostic.h.

Referenced by printDiagnosticOptions().

◆ getID()

unsigned clang::Diagnostic::getID ( ) const
inline

◆ getLocation()

const SourceLocation & clang::Diagnostic::getLocation ( ) const
inline

◆ getNumArgs()

unsigned clang::Diagnostic::getNumArgs ( ) const
inline

Definition at line 1532 of file Diagnostic.h.

References clang::DiagnosticStorage::NumDiagArgs.

Referenced by FormatDiagnostic(), and getArgKind().

◆ getNumFixItHints()

unsigned clang::Diagnostic::getNumFixItHints ( ) const
inline

◆ getNumRanges()

unsigned clang::Diagnostic::getNumRanges ( ) const
inline

Return the number of source ranges associated with this diagnostic.

Definition at line 1595 of file Diagnostic.h.

References clang::DiagnosticStorage::DiagRanges.

Referenced by getRange().

◆ getRange()

const CharSourceRange & clang::Diagnostic::getRange ( unsigned  Idx) const
inline
Precondition
Idx < getNumRanges()

Definition at line 1598 of file Diagnostic.h.

References clang::DiagnosticStorage::DiagRanges, and getNumRanges().

◆ getRanges()

ArrayRef< CharSourceRange > clang::Diagnostic::getRanges ( ) const
inline

◆ getRawArg()

uint64_t clang::Diagnostic::getRawArg ( unsigned  Idx) const
inline

Return the specified non-string argument in an opaque form.

Precondition
getArgKind(Idx) != DiagnosticsEngine::ak_std_string

Definition at line 1588 of file Diagnostic.h.

References clang::DiagnosticsEngine::ak_std_string, clang::DiagnosticStorage::DiagArgumentsVal, and getArgKind().

Referenced by FormatDiagnostic().

◆ getSourceManager()

SourceManager & clang::Diagnostic::getSourceManager ( ) const
inline

◆ hasSourceManager()

bool clang::Diagnostic::hasSourceManager ( ) const
inline

The documentation for this class was generated from the following files: