clang
3.9.0
|
Used for handling and querying diagnostic IDs. More...
#include <DiagnosticIDs.h>
Public Types | |
enum | Level { Ignored, Note, Remark, Warning, Error, Fatal } |
The level of the diagnostic, after it has been through mapping. More... | |
enum | SFINAEResponse { SFINAE_SubstitutionFailure, SFINAE_Suppress, SFINAE_Report, SFINAE_AccessControl } |
Enumeration describing how the emission of a diagnostic should be treated when it occurs during C++ template argument deduction. More... | |
Public Member Functions | |
DiagnosticIDs () | |
~DiagnosticIDs () | |
unsigned | getCustomDiagID (Level L, StringRef FormatString) |
Return an ID for a diagnostic with the specified format string and level. More... | |
StringRef | getDescription (unsigned DiagID) const |
Given a diagnostic ID, return a description of the issue. More... | |
bool | getDiagnosticsInGroup (diag::Flavor Flavor, StringRef Group, SmallVectorImpl< diag::kind > &Diags) const |
Get the set of all diagnostic IDs in the group with the given name. More... | |
void | getAllDiagnostics (diag::Flavor Flavor, SmallVectorImpl< diag::kind > &Diags) const |
Get the set of all diagnostic IDs. More... | |
Static Public Member Functions | |
static bool | isBuiltinWarningOrExtension (unsigned DiagID) |
Return true if the unmapped diagnostic levelof the specified diagnostic ID is a Warning or Extension. More... | |
static bool | isDefaultMappingAsError (unsigned DiagID) |
Return true if the specified diagnostic is mapped to errors by default. More... | |
static bool | isBuiltinNote (unsigned DiagID) |
Determine whether the given built-in diagnostic ID is a Note. More... | |
static bool | isBuiltinExtensionDiag (unsigned DiagID) |
Determine whether the given built-in diagnostic ID is for an extension of some sort. More... | |
static bool | isBuiltinExtensionDiag (unsigned DiagID, bool &EnabledByDefault) |
Determine whether the given built-in diagnostic ID is for an extension of some sort, and whether it is enabled by default. More... | |
static StringRef | getWarningOptionForDiag (unsigned DiagID) |
Return the lowest-level warning option that enables the specified diagnostic. More... | |
static unsigned | getCategoryNumberForDiag (unsigned DiagID) |
Return the category number that a specified DiagID belongs to, or 0 if no category. More... | |
static unsigned | getNumberOfCategories () |
Return the number of diagnostic categories. More... | |
static StringRef | getCategoryNameFromID (unsigned CategoryID) |
Given a category ID, return the name of the category. More... | |
static bool | isARCDiagnostic (unsigned DiagID) |
Return true if a given diagnostic falls into an ARC diagnostic category. More... | |
static SFINAEResponse | getDiagnosticSFINAEResponse (unsigned DiagID) |
Determines whether the given built-in diagnostic ID is for an error that is suppressed if it occurs during C++ template argument deduction. More... | |
static StringRef | getNearestOption (diag::Flavor Flavor, StringRef Group) |
Get the diagnostic option with the closest edit distance to the given group name. More... | |
Friends | |
class | DiagnosticsEngine |
Used for handling and querying diagnostic IDs.
Can be used and shared by multiple Diagnostics for multiple translation units.
Definition at line 116 of file DiagnosticIDs.h.
The level of the diagnostic, after it has been through mapping.
Enumerator | |
---|---|
Ignored | |
Note | |
Remark | |
Warning | |
Error | |
Fatal |
Definition at line 119 of file DiagnosticIDs.h.
Enumeration describing how the emission of a diagnostic should be treated when it occurs during C++ template argument deduction.
Definition at line 202 of file DiagnosticIDs.h.
DiagnosticIDs::DiagnosticIDs | ( | ) |
Definition at line 299 of file DiagnosticIDs.cpp.
DiagnosticIDs::~DiagnosticIDs | ( | ) |
Definition at line 301 of file DiagnosticIDs.cpp.
void DiagnosticIDs::getAllDiagnostics | ( | diag::Flavor | Flavor, |
SmallVectorImpl< diag::kind > & | Diags | ||
) | const |
Get the set of all diagnostic IDs.
Definition at line 564 of file DiagnosticIDs.cpp.
References StaticDiagInfo, and StaticDiagInfoSize.
|
static |
Given a category ID, return the name of the category.
getCategoryNameFromID - Given a category ID, return the name of the category, an empty string if CategoryID is zero, or null if CategoryID is invalid.
Definition at line 225 of file DiagnosticIDs.cpp.
References getNumberOfCategories().
Referenced by isARCDiagnostic(), PrintDiagnosticCategories(), printDiagnosticOptions(), and clang::arcmt::writeARCDiagsToPlist().
Return the category number that a specified DiagID
belongs to, or 0 if no category.
getCategoryNumberForDiag - Return the category number that a specified DiagID belongs to, or 0 if no category.
Definition at line 176 of file DiagnosticIDs.cpp.
References GetDiagInfo().
Referenced by isARCDiagnostic(), printDiagnosticOptions(), and clang::arcmt::writeARCDiagsToPlist().
Return an ID for a diagnostic with the specified format string and level.
getCustomDiagID - Return an ID for a diagnostic with the specified message and level.
If this is the first request for this diagnostic, it is registered and created, otherwise the existing ID is returned.
If this is the first request for this diagnostic, it is registered and created, otherwise the existing ID is returned.
FormatString | A fixed diagnostic format string that will be hashed and mapped to a unique DiagID. |
Definition at line 311 of file DiagnosticIDs.cpp.
References clang::diag::CustomDiagInfo::getOrCreateDiagID().
StringRef DiagnosticIDs::getDescription | ( | unsigned | DiagID | ) | const |
Given a diagnostic ID, return a description of the issue.
getDescription - Given a diagnostic ID, return a description of the issue.
Definition at line 359 of file DiagnosticIDs.cpp.
References clang::diag::CustomDiagInfo::getDescription(), and GetDiagInfo().
|
static |
Determines whether the given built-in diagnostic ID is for an error that is suppressed if it occurs during C++ template argument deduction.
When an error is suppressed due to SFINAE, the template argument deduction fails but no diagnostic is emitted. Certain classes of errors, such as those errors that involve C++ access control, are not SFINAE errors.
Definition at line 234 of file DiagnosticIDs.cpp.
References GetDiagInfo(), and SFINAE_Report.
Referenced by clang::Sema::EmitCurrentDiagnostic().
bool DiagnosticIDs::getDiagnosticsInGroup | ( | diag::Flavor | Flavor, |
StringRef | Group, | ||
SmallVectorImpl< diag::kind > & | Diags | ||
) | const |
Get the set of all diagnostic IDs in the group with the given name.
[out] | Diags | - On return, the diagnostics in the group. |
true
if the given group is unknown, false
otherwise. Definition at line 551 of file DiagnosticIDs.cpp.
References clang::begin(), clang::end(), and getDiagnosticsInGroup().
Referenced by getNearestOption().
|
static |
Get the diagnostic option with the closest edit distance to the given group name.
Definition at line 571 of file DiagnosticIDs.cpp.
References getDiagnosticsInGroup().
Referenced by EmitUnknownDiagWarning().
|
static |
Return the number of diagnostic categories.
getNumberOfCategories - Return the number of categories
Definition at line 218 of file DiagnosticIDs.cpp.
Referenced by getCategoryNameFromID(), and PrintDiagnosticCategories().
|
static |
Return the lowest-level warning option that enables the specified diagnostic.
getWarningOptionForDiag - Return the lowest-level warning option that enables the specified diagnostic.
If there is no -Wfoo flag that controls the diagnostic, this returns null.
Definition at line 514 of file DiagnosticIDs.cpp.
References GetDiagInfo().
Referenced by clang::LogDiagnosticPrinter::HandleDiagnostic(), and printDiagnosticOptions().
Return true if a given diagnostic falls into an ARC diagnostic category.
Definition at line 716 of file DiagnosticIDs.cpp.
References getCategoryNameFromID(), and getCategoryNumberForDiag().
Determine whether the given built-in diagnostic ID is for an extension of some sort.
Definition at line 165 of file DiagnosticIDs.h.
Determine whether the given built-in diagnostic ID is for an extension of some sort, and whether it is enabled by default.
isBuiltinExtensionDiag - Determine whether the given built-in diagnostic ID is for an extension of some sort.
This also returns EnabledByDefault, which is set to indicate whether the diagnostic is ignored by default (in which case -pedantic enables it) or treated as a warning/error by default.
Definition at line 339 of file DiagnosticIDs.cpp.
References clang::diag::DIAG_UPPER_LIMIT, getBuiltinDiagClass(), GetDefaultDiagMapping(), clang::DiagnosticMapping::getSeverity(), and clang::diag::Ignored.
Determine whether the given built-in diagnostic ID is a Note.
Definition at line 329 of file DiagnosticIDs.cpp.
References clang::diag::DIAG_UPPER_LIMIT, and getBuiltinDiagClass().
Referenced by clang::Sema::EmitCurrentDiagnostic().
Return true if the unmapped diagnostic levelof the specified diagnostic ID is a Warning or Extension.
isBuiltinWarningOrExtension - Return true if the unmapped diagnostic level of the specified diagnostic ID is a Warning or Extension.
This only works on builtin diagnostics, not custom ones, and is not legal to call on NOTEs.
Definition at line 322 of file DiagnosticIDs.cpp.
References clang::diag::DIAG_UPPER_LIMIT, and getBuiltinDiagClass().
Referenced by printDiagnosticOptions().
Return true if the specified diagnostic is mapped to errors by default.
Definition at line 350 of file DiagnosticIDs.cpp.
References clang::diag::DIAG_UPPER_LIMIT, clang::diag::Error, GetDefaultDiagMapping(), and clang::DiagnosticMapping::getSeverity().
Referenced by printDiagnosticOptions().
|
friend |
Definition at line 282 of file DiagnosticIDs.h.