xref: /llvm-project/clang/test/Misc/warning-suppression-mappings-pragmas.cpp (revision 5845688e91d85d46c0f47daaf4edfdfc772853cf)
1*5845688eSKadir Cetinkaya // Check that clang-diagnostic pragmas take precedence over suppression mapping.
2*5845688eSKadir Cetinkaya // RUN: %clang -cc1 -verify -Wformat=2 --warning-suppression-mappings=%S/Inputs/suppression-mapping.txt -fsyntax-only %s
3*5845688eSKadir Cetinkaya 
4*5845688eSKadir Cetinkaya __attribute__((__format__ (__printf__, 1, 2)))
5*5845688eSKadir Cetinkaya void format_err(const char* const pString, ...);
6*5845688eSKadir Cetinkaya 
7*5845688eSKadir Cetinkaya void foo() {
8*5845688eSKadir Cetinkaya   const char *x;
9*5845688eSKadir Cetinkaya   format_err(x); // Warning suppressed here.
10*5845688eSKadir Cetinkaya   // check that pragmas take precedence
11*5845688eSKadir Cetinkaya #pragma clang diagnostic push
12*5845688eSKadir Cetinkaya #pragma clang diagnostic warning "-Wformat=2"
13*5845688eSKadir Cetinkaya   format_err(x); // expected-warning{{format string is not a string literal (potentially insecure)}} \
14*5845688eSKadir Cetinkaya                  // expected-note{{treat the string as an argument to avoid this}}
15*5845688eSKadir Cetinkaya #pragma clang diagnostic pop
16*5845688eSKadir Cetinkaya }
17