clang 20.0.0git
Classes | Namespaces | Macros | Functions | Variables
DiagnosticIDs.cpp File Reference
#include "clang/Basic/DiagnosticIDs.h"
#include "clang/Basic/AllDiagnostics.h"
#include "clang/Basic/DiagnosticCategories.h"
#include "clang/Basic/SourceManager.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/ErrorHandling.h"
#include <map>
#include <optional>
#include "clang/Basic/DiagnosticCommonKinds.inc"
#include "clang/Basic/DiagnosticDriverKinds.inc"
#include "clang/Basic/DiagnosticFrontendKinds.inc"
#include "clang/Basic/DiagnosticSerializationKinds.inc"
#include "clang/Basic/DiagnosticLexKinds.inc"
#include "clang/Basic/DiagnosticParseKinds.inc"
#include "clang/Basic/DiagnosticASTKinds.inc"
#include "clang/Basic/DiagnosticCommentKinds.inc"
#include "clang/Basic/DiagnosticCrossTUKinds.inc"
#include "clang/Basic/DiagnosticSemaKinds.inc"
#include "clang/Basic/DiagnosticAnalysisKinds.inc"
#include "clang/Basic/DiagnosticRefactoringKinds.inc"
#include "clang/Basic/DiagnosticInstallAPIKinds.inc"
#include "clang/Basic/DiagnosticGroups.inc"

Go to the source code of this file.

Classes

class  clang::diag::CustomDiagInfo
 

Namespaces

namespace  clang
 The JSON file list parser is used to communicate input to InstallAPI.
 
namespace  clang::diag
 

Macros

#define DIAG(ENUM, CLASS, DEFAULT_SEVERITY, DESC, GROUP, SFINAE, NOWERROR, SHOWINSYSHEADER, SHOWINSYSMACRO, DEFERRABLE, CATEGORY)    char ENUM##_desc[sizeof(DESC)];
 
#define DIAG(ENUM, CLASS, DEFAULT_SEVERITY, DESC, GROUP, SFINAE, NOWERROR, SHOWINSYSHEADER, SHOWINSYSMACRO, DEFERRABLE, CATEGORY)    DESC,
 
#define DIAG(ENUM, CLASS, DEFAULT_SEVERITY, DESC, GROUP, SFINAE, NOWERROR, SHOWINSYSHEADER, SHOWINSYSMACRO, DEFERRABLE, CATEGORY)    offsetof(StaticDiagInfoDescriptionStringTable, ENUM##_desc),
 
#define STRINGIFY_NAME(NAME)   #NAME
 
#define VALIDATE_DIAG_SIZE(NAME)
 
#define DIAG(ENUM, CLASS, DEFAULT_SEVERITY, DESC, GROUP, SFINAE, NOWERROR, SHOWINSYSHEADER, SHOWINSYSMACRO, DEFERRABLE, CATEGORY)
 
#define CATEGORY(NAME, PREV)
 
#define GET_CATEGORY_TABLE
 
#define CATEGORY(X, ENUM)   { X, STR_SIZE(X, uint8_t) },
 
#define GET_DIAG_ARRAYS
 
#define DIAG_ENTRY(GroupName, FlagNameOffset, Members, SubGroups, Docs)    {FlagNameOffset, Members, SubGroups, Docs},
 

Functions

static const StaticDiagInfoRec * GetDiagInfo (unsigned DiagID)
 GetDiagInfo - Return the StaticDiagInfoRec entry for the specified DiagID, or null if the ID is invalid.
 
static unsigned getBuiltinDiagClass (unsigned DiagID)
 getBuiltinDiagClass - Return the class field of the diagnostic.
 
static DiagnosticIDs::Level toLevel (diag::Severity SV)
 
static bool getDiagnosticsInGroup (diag::Flavor Flavor, const WarningOption *Group, SmallVectorImpl< diag::kind > &Diags)
 Return true if any diagnostics were found in this group, even if they were filtered out due to having the wrong flavor.
 

Variables

static const unsigned StaticDiagInfoSize = std::size(StaticDiagInfo)
 
static const StaticDiagCategoryRec CategoryNameTable []
 
static const WarningOption OptionTable []
 

Macro Definition Documentation

◆ CATEGORY [1/2]

#define CATEGORY (   NAME,
  PREV 
)
Value:
if (DiagID > DIAG_START_##NAME) { \
Offset += NUM_BUILTIN_##PREV##_DIAGNOSTICS - DIAG_START_##PREV - 1; \
ID -= DIAG_START_##NAME - DIAG_START_##PREV; \
}

◆ CATEGORY [2/2]

#define CATEGORY (   X,
  ENUM 
)    { X, STR_SIZE(X, uint8_t) },

◆ DIAG [1/4]

#define DIAG (   ENUM,
  CLASS,
  DEFAULT_SEVERITY,
  DESC,
  GROUP,
  SFINAE,
  NOWERROR,
  SHOWINSYSHEADER,
  SHOWINSYSMACRO,
  DEFERRABLE,
  CATEGORY 
)     char ENUM##_desc[sizeof(DESC)];

Definition at line 36 of file DiagnosticIDs.cpp.

◆ DIAG [2/4]

#define DIAG (   ENUM,
  CLASS,
  DEFAULT_SEVERITY,
  DESC,
  GROUP,
  SFINAE,
  NOWERROR,
  SHOWINSYSHEADER,
  SHOWINSYSMACRO,
  DEFERRABLE,
  CATEGORY 
)     DESC,

Definition at line 36 of file DiagnosticIDs.cpp.

◆ DIAG [3/4]

#define DIAG (   ENUM,
  CLASS,
  DEFAULT_SEVERITY,
  DESC,
  GROUP,
  SFINAE,
  NOWERROR,
  SHOWINSYSHEADER,
  SHOWINSYSMACRO,
  DEFERRABLE,
  CATEGORY 
)     offsetof(StaticDiagInfoDescriptionStringTable, ENUM##_desc),

Definition at line 36 of file DiagnosticIDs.cpp.

◆ DIAG [4/4]

#define DIAG (   ENUM,
  CLASS,
  DEFAULT_SEVERITY,
  DESC,
  GROUP,
  SFINAE,
  NOWERROR,
  SHOWINSYSHEADER,
  SHOWINSYSMACRO,
  DEFERRABLE,
  CATEGORY 
)
Value:
{ \
diag::ENUM, \
DEFAULT_SEVERITY, \
CLASS, \
DiagnosticIDs::SFINAE, \
NOWERROR, \
SHOWINSYSHEADER, \
SHOWINSYSMACRO, \
GROUP, \
DEFERRABLE, \
STR_SIZE(DESC, uint16_t)},
#define CATEGORY(NAME, PREV)

Definition at line 36 of file DiagnosticIDs.cpp.

◆ DIAG_ENTRY

#define DIAG_ENTRY (   GroupName,
  FlagNameOffset,
  Members,
  SubGroups,
  Docs 
)     {FlagNameOffset, Members, SubGroups, Docs},

◆ GET_CATEGORY_TABLE

#define GET_CATEGORY_TABLE

◆ GET_DIAG_ARRAYS

#define GET_DIAG_ARRAYS

Definition at line 600 of file DiagnosticIDs.cpp.

◆ STRINGIFY_NAME

#define STRINGIFY_NAME (   NAME)    #NAME

Definition at line 157 of file DiagnosticIDs.cpp.

◆ VALIDATE_DIAG_SIZE

#define VALIDATE_DIAG_SIZE (   NAME)
Value:
static_assert( \
static_cast<unsigned>(diag::NUM_BUILTIN_##NAME##_DIAGNOSTICS) < \
static_cast<unsigned>(diag::DIAG_START_##NAME) + \
static_cast<unsigned>(diag::DIAG_SIZE_##NAME), \
STRINGIFY_NAME( \
DIAG_SIZE_##NAME) " is insufficient to contain all " \
"diagnostics, it may need to be made larger in " \
"DiagnosticIDs.h.");

Definition at line 158 of file DiagnosticIDs.cpp.

Function Documentation

◆ getBuiltinDiagClass()

static unsigned getBuiltinDiagClass ( unsigned  DiagID)
static

getBuiltinDiagClass - Return the class field of the diagnostic.

Definition at line 348 of file DiagnosticIDs.cpp.

References GetDiagInfo().

Referenced by clang::DiagnosticIDs::isBuiltinExtensionDiag(), clang::DiagnosticIDs::isBuiltinNote(), and clang::DiagnosticIDs::isBuiltinWarningOrExtension().

◆ GetDiagInfo()

static const StaticDiagInfoRec * GetDiagInfo ( unsigned  DiagID)
static

◆ getDiagnosticsInGroup()

static bool getDiagnosticsInGroup ( diag::Flavor  Flavor,
const WarningOption *  Group,
SmallVectorImpl< diag::kind > &  Diags 
)
static

Return true if any diagnostics were found in this group, even if they were filtered out due to having the wrong flavor.

Definition at line 674 of file DiagnosticIDs.cpp.

References GetDiagInfo(), getDiagnosticsInGroup(), clang::Member, clang::NotFound, OptionTable, and clang::diag::Remark.

Referenced by getDiagnosticsInGroup().

◆ toLevel()

static DiagnosticIDs::Level toLevel ( diag::Severity  SV)
static

Variable Documentation

◆ CategoryNameTable

const StaticDiagCategoryRec CategoryNameTable[]
static
Initial value:
= {
#define GET_CATEGORY_TABLE
#define CATEGORY(X, ENUM)
{ nullptr, 0 }
}

Definition at line 309 of file DiagnosticIDs.cpp.

Referenced by clang::DiagnosticIDs::getCategoryNameFromID(), and clang::DiagnosticIDs::getNumberOfCategories().

◆ OptionTable

const WarningOption OptionTable[]
static

◆ StaticDiagInfoSize

const unsigned StaticDiagInfoSize = std::size(StaticDiagInfo)
static

Definition at line 218 of file DiagnosticIDs.cpp.

Referenced by clang::DiagnosticIDs::getAllDiagnostics(), and GetDiagInfo().