// RUN: %clang_cc1 -Wpedantic-macros %s -fsyntax-only -verify // This test verifies that the -Wpedantic-macros warnings don't fire in the // annotation pragmas themselves. This ensures you can annotate macros with // more than one of the pragmas without spewing warnings all over the code. #include "Inputs/pedantic-macro-interplay.h" #define UNSAFE_MACRO_2 1 #pragma clang deprecated(UNSAFE_MACRO_2, "Don't use this!") // not-expected-warning@+1{{macro 'UNSAFE_MACRO_2' has been marked as deprecated: Don't use this!}} #pragma clang restrict_expansion(UNSAFE_MACRO_2, "Don't use this!") #define Foo 1 #pragma clang final(Foo) // expected-note@+2{{macro marked 'deprecated' here}} // expected-note@+1{{macro marked 'deprecated' here}} #pragma clang deprecated(Foo) // expected-note@+1{{macro marked 'restrict_expansion' here}} #pragma clang restrict_expansion(Foo) // Test that unsafe_header and deprecated markings stick around after the undef #include "Inputs/final-macro.h" // expected-warning@+1{{macro 'Foo' has been marked as deprecated}} const int X = Foo;