Often we run into situations where we want to ignore warnings from system headers, but Clang will still give warnings about the contents of a macro defined in a system header used in user-code. Introduce a ShowInSystemMacro option to be able to specify which warnings we do want to keep raising warnings for. The current behavior is kept in this patch (i.e. warnings from system macros are enabled by default). The decision as to whether this should be an opt-in or opt-out feature can be made in a separate patch. To put the feature to test, replace duplicated code for Wshadow and Wold-style-cast with the SuppressInSystemMacro tag. Also disable the warning for C++20 designators, fixing #52944. Differential Revision: https://reviews.llvm.org/D116833
28 lines
1.2 KiB
TableGen
28 lines
1.2 KiB
TableGen
// RUN: clang-tblgen -gen-clang-diags-defs -I%S %s -o - 2>&1 | \
|
|
// RUN: FileCheck --strict-whitespace %s
|
|
include "DiagnosticBase.inc"
|
|
|
|
// Test usage of Deferrable and NonDeferrable in diagnostics.
|
|
|
|
def test_default : Error<"This error is non-deferrable by default">;
|
|
// CHECK-DAG: DIAG(test_default, {{.*}}SFINAE_SubstitutionFailure, false, true, true, false, 0)
|
|
|
|
def test_deferrable : Error<"This error is deferrable">, Deferrable;
|
|
// CHECK-DAG: DIAG(test_deferrable, {{.*}} SFINAE_SubstitutionFailure, false, true, true, true, 0)
|
|
|
|
def test_non_deferrable : Error<"This error is non-deferrable">, NonDeferrable;
|
|
// CHECK-DAG: DIAG(test_non_deferrable, {{.*}} SFINAE_SubstitutionFailure, false, true, true, false, 0)
|
|
|
|
let Deferrable = 1 in {
|
|
|
|
def test_let : Error<"This error is deferrable by let">;
|
|
// CHECK-DAG: DIAG(test_let, {{.*}} SFINAE_SubstitutionFailure, false, true, true, true, 0)
|
|
|
|
// Make sure TextSubstitution is allowed in the let Deferrable block.
|
|
def textsub : TextSubstitution<"%select{text1|text2}0">;
|
|
|
|
def test_let2 : Error<"This error is deferrable by let %sub{textsub}0">;
|
|
// CHECK-DAG: DIAG(test_let2, {{.*}} SFINAE_SubstitutionFailure, false, true, true, true, 0)
|
|
|
|
}
|