Author: Chris Bieneman Date: 2021-11-11T13:51:26-06:00 New Revision: 3e7ad1f2b2c0a753749eaba88d369d6032a50764
URL: https://github.com/llvm/llvm-project/commit/3e7ad1f2b2c0a753749eaba88d369d6032a50764 DIFF: https://github.com/llvm/llvm-project/commit/3e7ad1f2b2c0a753749eaba88d369d6032a50764.diff LOG: Emit final macro diagnostics in system headers Final macro diagnostics should log from system headers. As planned, final macros are hard-mode. They always log diagnostics. Added: clang/test/Lexer/Inputs/final-macro-system.h Modified: clang/include/clang/Basic/DiagnosticLexKinds.td clang/test/Lexer/final-macro.c Removed: ################################################################################ diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td index 92c6b0bbffc30..805dcab2e0084 100644 --- a/clang/include/clang/Basic/DiagnosticLexKinds.td +++ b/clang/include/clang/Basic/DiagnosticLexKinds.td @@ -564,7 +564,7 @@ def note_pp_macro_annotation : def warn_pragma_final_macro : ExtWarn<"macro %0 has been marked as final and should not be " "%select{undefined|redefined}1">, - InGroup<FinalMacro>; + InGroup<FinalMacro>, ShowInSystemHeader; // - #pragma execution_character_set(...) def warn_pragma_exec_charset_expected : diff --git a/clang/test/Lexer/Inputs/final-macro-system.h b/clang/test/Lexer/Inputs/final-macro-system.h new file mode 100644 index 0000000000000..f30e5d45e4dcd --- /dev/null +++ b/clang/test/Lexer/Inputs/final-macro-system.h @@ -0,0 +1,4 @@ +// expected-warning@+1{{macro 'SYSTEM_MACRO' has been marked as final and should not be undefined}} +#undef SYSTEM_MACRO +// expected-warning@+1{{macro 'SYSTEM_MACRO' has been marked as final and should not be redefined}} +#define SYSTEM_MACRO WoahMoar diff --git a/clang/test/Lexer/final-macro.c b/clang/test/Lexer/final-macro.c index 498773d9dfdf5..2992714dd8a5a 100644 --- a/clang/test/Lexer/final-macro.c +++ b/clang/test/Lexer/final-macro.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -Wfinal-macro %s -fsyntax-only -verify +// RUN: %clang_cc1 -Wfinal-macro %s -fsyntax-only -isystem %S/Inputs -verify // Test warning production #define Foo 1 @@ -43,3 +43,8 @@ // no diagnostics triggered by these pragmas. #pragma clang deprecated(Foo) #pragma clang restrict_expansion(Foo) + +#define SYSTEM_MACRO Woah +// expected-note@+1 2{{macro marked 'final' here}} +#pragma clang final(SYSTEM_MACRO) +#include <final-macro-system.h> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits