xref: /llvm-project/clang/test/Misc/warning-suppression-mappings.cpp (revision 5845688e91d85d46c0f47daaf4edfdfc772853cf)
1*5845688eSKadir Cetinkaya // Check for warnings
2*5845688eSKadir Cetinkaya // RUN: not %clang --warning-suppression-mappings=foo.txt -fsyntax-only %s 2>&1 | FileCheck -check-prefix MISSING_MAPPING %s
3*5845688eSKadir Cetinkaya // RUN: not %clang -cc1 --warning-suppression-mappings=foo.txt -fsyntax-only %s 2>&1 | FileCheck -check-prefix MISSING_MAPPING %s
4*5845688eSKadir Cetinkaya // MISSING_MAPPING: error: no such file or directory: 'foo.txt'
5*5845688eSKadir Cetinkaya 
6*5845688eSKadir Cetinkaya // Check that it's no-op when diagnostics aren't enabled.
7*5845688eSKadir Cetinkaya // RUN: %clang -cc1 -Wno-everything -Werror --warning-suppression-mappings=%S/Inputs/suppression-mapping.txt -fsyntax-only %s 2>&1 | FileCheck -check-prefix WARNINGS_DISABLED --allow-empty %s
8*5845688eSKadir Cetinkaya // WARNINGS_DISABLED-NOT: warning:
9*5845688eSKadir Cetinkaya // WARNINGS_DISABLED-NOT: error:
10*5845688eSKadir Cetinkaya 
11*5845688eSKadir Cetinkaya // RUN: %clang -cc1 -verify -Wformat=2 -Wunused --warning-suppression-mappings=%S/Inputs/suppression-mapping.txt -fsyntax-only %s
12*5845688eSKadir Cetinkaya 
13*5845688eSKadir Cetinkaya __attribute__((__format__ (__printf__, 1, 2)))
14*5845688eSKadir Cetinkaya void format_err(const char* const pString, ...);
15*5845688eSKadir Cetinkaya 
16*5845688eSKadir Cetinkaya namespace {
17*5845688eSKadir Cetinkaya void foo() {
18*5845688eSKadir Cetinkaya   const char *x;
19*5845688eSKadir Cetinkaya   format_err(x); // Warning suppressed here.
20*5845688eSKadir Cetinkaya   const char *y; // expected-warning{{unused variable 'y'}}
21*5845688eSKadir Cetinkaya }
22*5845688eSKadir Cetinkaya }
23*5845688eSKadir Cetinkaya 
24*5845688eSKadir Cetinkaya #line 42 "foo/bar.h"
25*5845688eSKadir Cetinkaya namespace {
26*5845688eSKadir Cetinkaya void bar() { // expected-warning{{unused function 'bar'}}
27*5845688eSKadir Cetinkaya   const char *x;
28*5845688eSKadir Cetinkaya   format_err(x); // expected-warning{{format string is not a string literal (potentially insecure)}} \
29*5845688eSKadir Cetinkaya                  // expected-note{{treat the string as an argument to avoid this}}
30*5845688eSKadir Cetinkaya }
31*5845688eSKadir Cetinkaya }
32