1 
2 // Copy the 'mylib.h' to a directory under the build directory. This is
3 // required, since the relative order of the emitted diagnostics depends on the
4 // absolute file paths which is sorted by clang-tidy prior emitting.
5 //
6 // RUN: mkdir -p %t/sys && mkdir -p %t/usr \
7 // RUN:   && cp %S/Inputs/deprecated-headers/mysystemlib.h %t/sys/mysystemlib.h \
8 // RUN:   && cp %S/Inputs/deprecated-headers/mylib.h       %t/usr/mylib.h
9 
10 // RUN: %check_clang_tidy -std=c++11 %s modernize-deprecated-headers %t \
11 // RUN:   -check-suffixes=DEFAULT \
12 // RUN:   --header-filter='.*' --system-headers \
13 // RUN:   -- -I %t/usr -isystem %t/sys -isystem %S/Inputs/deprecated-headers
14 
15 // RUN: %check_clang_tidy -std=c++11 %s modernize-deprecated-headers %t \
16 // RUN:   -check-suffixes=DEFAULT,CHECK-HEADER-FILE \
17 // RUN:   -config="{CheckOptions: {modernize-deprecated-headers.CheckHeaderFile: 'true'}}" \
18 // RUN:   --header-filter='.*' --system-headers \
19 // RUN:   -- -I %t/usr -isystem %t/sys -isystem %S/Inputs/deprecated-headers
20 
21 // REQUIRES: system-linux
22 
23 #define EXTERN_C extern "C"
24 
25 extern "C++" {
26 // We should still have the warnings here.
27 #include <stdbool.h>
28 // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:10: warning: including 'stdbool.h' has no effect in C++; consider removing it [modernize-deprecated-headers]
29 }
30 
31 #include <assert.h>
32 // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers]
33 
34 #include <stdbool.h>
35 // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:10: warning: including 'stdbool.h' has no effect in C++; consider removing it [modernize-deprecated-headers]
36 
37 #include <mysystemlib.h> // no-warning: Don't warn into system headers.
38 
39 #include <mylib.h>
40 // CHECK-MESSAGES-CHECK-HEADER-FILE: mylib.h:1:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers]
41 
42 namespace wrapping {
43 extern "C" {
44 #include <assert.h>  // no-warning
45 #include <mylib.h>   // no-warning
46 #include <stdbool.h> // no-warning
47 }
48 } // namespace wrapping
49 
50 extern "C" {
51 namespace wrapped {
52 #include <assert.h>  // no-warning
53 #include <mylib.h>   // no-warning
54 #include <stdbool.h> // no-warning
55 } // namespace wrapped
56 }
57 
58 namespace wrapping {
59 extern "C" {
60 namespace wrapped {
61 #include <assert.h>  // no-warning
62 #include <mylib.h>   // no-warning
63 #include <stdbool.h> // no-warning
64 } // namespace wrapped
65 }
66 } // namespace wrapping
67 
68 EXTERN_C {
69 #include <assert.h>  // no-warning
70 #include <mylib.h>   // no-warning
71 #include <stdbool.h> // no-warning
72 }
73