//===--- DiagnosticIDs.h - Diagnostic IDs Handling --------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// Defines the Diagnostic IDs-related interfaces. /// //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_BASIC_DIAGNOSTICIDS_H #define LLVM_CLANG_BASIC_DIAGNOSTICIDS_H #include "clang/Basic/DiagnosticCategories.h" #include "clang/Basic/LLVM.h" #include "llvm/ADT/IntrusiveRefCntPtr.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/ErrorHandling.h" #include <optional> #include <vector> namespace clang { class DiagnosticsEngine; class SourceLocation; // Import the diagnostic enums themselves. namespace diag { enum class Group; // Size of each of the diagnostic categories. enum { … }; // Start position for diagnostics. enum { … }; class CustomDiagInfo; /// All of the diagnostics that can be emitted by the frontend. kind; // Get typedefs for common diagnostics. enum { … }; /// Enum values that allow the client to map NOTEs, WARNINGs, and EXTENSIONs /// to either Ignore (nothing), Remark (emit a remark), Warning /// (emit a warning) or Error (emit as an error). It allows clients to /// map ERRORs to Error or Fatal (stop emitting diagnostics after this one). enum class Severity : uint8_t { … }; /// Flavors of diagnostics we can emit. Used to filter for a particular /// kind of diagnostic (for instance, for -W/-R flags). enum class Flavor { … }; } class DiagnosticMapping { … }; /// Used for handling and querying diagnostic IDs. /// /// Can be used and shared by multiple Diagnostics for multiple translation units. class DiagnosticIDs : public RefCountedBase<DiagnosticIDs> { … }; } // end namespace clang #endif