xref: /llvm-project/clang/test/Index/pch-warn-as-error-code.cpp (revision 70ec1c7e62461ad559cc302adbd2f4e83e2fc264)
1*70ec1c7eSArgyrios Kyrtzidis // RUN: rm -f %t.head.h.pch
2*70ec1c7eSArgyrios Kyrtzidis // RUN: c-index-test -write-pch %t.head.h.pch %s -Wuninitialized -Werror=unused 2>&1 | FileCheck -check-prefix=HEAD_DIAGS %s
3*70ec1c7eSArgyrios Kyrtzidis // RUN: c-index-test -test-load-source local %s -include %t.head.h -Wuninitialized -Werror=unused 2>&1 | FileCheck -check-prefix=MAIN_DIAGS %s
4*70ec1c7eSArgyrios Kyrtzidis 
5*70ec1c7eSArgyrios Kyrtzidis // Make sure -Wuninitialized works even though the header had a warn-as-error occurrence.
6*70ec1c7eSArgyrios Kyrtzidis 
7*70ec1c7eSArgyrios Kyrtzidis // HEAD_DIAGS: error: unused variable 'x'
8*70ec1c7eSArgyrios Kyrtzidis // MAIN_DIAGS: warning: variable 'x1' is uninitialized
9*70ec1c7eSArgyrios Kyrtzidis // MAIN_DIAGS-NOT: error: use of undeclared identifier
10*70ec1c7eSArgyrios Kyrtzidis 
11*70ec1c7eSArgyrios Kyrtzidis #ifndef HEADER
12*70ec1c7eSArgyrios Kyrtzidis #define HEADER
13*70ec1c7eSArgyrios Kyrtzidis 
foo_head()14*70ec1c7eSArgyrios Kyrtzidis static void foo_head() {
15*70ec1c7eSArgyrios Kyrtzidis   int x;
16*70ec1c7eSArgyrios Kyrtzidis }
17*70ec1c7eSArgyrios Kyrtzidis 
18*70ec1c7eSArgyrios Kyrtzidis #else
19*70ec1c7eSArgyrios Kyrtzidis 
test()20*70ec1c7eSArgyrios Kyrtzidis void test() {
21*70ec1c7eSArgyrios Kyrtzidis   int x1; // expected-note {{initialize}}
22*70ec1c7eSArgyrios Kyrtzidis   int x2 = x1; // expected-warning {{uninitialized}}
23*70ec1c7eSArgyrios Kyrtzidis   (void)x2;
24*70ec1c7eSArgyrios Kyrtzidis   foo_head();
25*70ec1c7eSArgyrios Kyrtzidis }
26*70ec1c7eSArgyrios Kyrtzidis 
27*70ec1c7eSArgyrios Kyrtzidis #endif
28