[flang-commits] [clang] [clang-tools-extra] [flang] [clang] Extend diagnose_if to accept more detailed warning information, take 2 (PR #119712)
kadir çetinkaya via flang-commits
flang-commits at lists.llvm.org
Wed Jan 15 02:22:27 PST 2025
================
@@ -181,13 +182,96 @@ class DiagnosticMapping {
class DiagnosticIDs : public RefCountedBase<DiagnosticIDs> {
public:
/// The level of the diagnostic, after it has been through mapping.
- enum Level {
- Ignored, Note, Remark, Warning, Error, Fatal
+ enum Level : uint8_t { Ignored, Note, Remark, Warning, Error, Fatal };
+
+ // Diagnostic classes.
+ enum Class {
+ CLASS_INVALID = 0x00,
+ CLASS_NOTE = 0x01,
+ CLASS_REMARK = 0x02,
+ CLASS_WARNING = 0x03,
+ CLASS_EXTENSION = 0x04,
+ CLASS_ERROR = 0x05
+ };
+
+ static bool IsCustomDiag(diag::kind Diag) {
+ return Diag >= diag::DIAG_UPPER_LIMIT;
+ }
+
+ class CustomDiagDesc {
+ LLVM_PREFERRED_TYPE(diag::Severity)
+ unsigned DefaultSeverity : 3;
+ LLVM_PREFERRED_TYPE(Class)
+ unsigned DiagClass : 3;
+ LLVM_PREFERRED_TYPE(bool)
+ unsigned ShowInSystemHeader : 1;
+ LLVM_PREFERRED_TYPE(bool)
+ unsigned ShowInSystemMacro : 1;
+ LLVM_PREFERRED_TYPE(bool)
+ unsigned HasGroup : 1;
+ diag::Group Group;
+ std::string Description;
+
+ auto get_as_tuple() const {
+ return std::tuple(DefaultSeverity, DiagClass, ShowInSystemHeader,
+ ShowInSystemMacro, HasGroup, Group,
+ std::string_view{Description});
+ }
+
+ public:
+ CustomDiagDesc(diag::Severity DefaultSeverity, std::string Description,
+ unsigned Class = CLASS_WARNING,
+ bool ShowInSystemHeader = false,
+ bool ShowInSystemMacro = false,
----------------
kadircet wrote:
existing behavior says these actually default to `true`, https://github.com/llvm/llvm-project/blob/main/clang/lib/Basic/DiagnosticIDs.cpp#L585-587
https://github.com/llvm/llvm-project/pull/119712
More information about the flang-commits
mailing list