189a1d03eSRichard 289a1d03eSRichard // Copy the 'mylib.h' to a directory under the build directory. This is 389a1d03eSRichard // required, since the relative order of the emitted diagnostics depends on the 489a1d03eSRichard // absolute file paths which is sorted by clang-tidy prior emitting. 589a1d03eSRichard // 689a1d03eSRichard // RUN: mkdir -p %t/sys && mkdir -p %t/usr \ 789a1d03eSRichard // RUN: && cp %S/Inputs/deprecated-headers/mysystemlib.h %t/sys/mysystemlib.h \ 889a1d03eSRichard // RUN: && cp %S/Inputs/deprecated-headers/mylib.h %t/usr/mylib.h 989a1d03eSRichard 1089a1d03eSRichard // RUN: %check_clang_tidy -std=c++11 %s modernize-deprecated-headers %t \ 1189a1d03eSRichard // RUN: -check-suffixes=DEFAULT \ 1289a1d03eSRichard // RUN: --header-filter='.*' --system-headers \ 1389a1d03eSRichard // RUN: -- -I %t/usr -isystem %t/sys -isystem %S/Inputs/deprecated-headers 1489a1d03eSRichard 1589a1d03eSRichard // RUN: %check_clang_tidy -std=c++11 %s modernize-deprecated-headers %t \ 1689a1d03eSRichard // RUN: -check-suffixes=DEFAULT,CHECK-HEADER-FILE \ 17*e8a3ddafSNathan James // RUN: -config="{CheckOptions: {modernize-deprecated-headers.CheckHeaderFile: 'true'}}" \ 1889a1d03eSRichard // RUN: --header-filter='.*' --system-headers \ 1989a1d03eSRichard // RUN: -- -I %t/usr -isystem %t/sys -isystem %S/Inputs/deprecated-headers 2089a1d03eSRichard 2189a1d03eSRichard // REQUIRES: system-linux 2289a1d03eSRichard 2389a1d03eSRichard #define EXTERN_C extern "C" 2489a1d03eSRichard 2589a1d03eSRichard extern "C++" { 2689a1d03eSRichard // We should still have the warnings here. 2789a1d03eSRichard #include <stdbool.h> 2889a1d03eSRichard // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:10: warning: including 'stdbool.h' has no effect in C++; consider removing it [modernize-deprecated-headers] 2989a1d03eSRichard } 3089a1d03eSRichard 3189a1d03eSRichard #include <assert.h> 3289a1d03eSRichard // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers] 3389a1d03eSRichard 3489a1d03eSRichard #include <stdbool.h> 3589a1d03eSRichard // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:10: warning: including 'stdbool.h' has no effect in C++; consider removing it [modernize-deprecated-headers] 3689a1d03eSRichard 3789a1d03eSRichard #include <mysystemlib.h> // no-warning: Don't warn into system headers. 3889a1d03eSRichard 3989a1d03eSRichard #include <mylib.h> 4089a1d03eSRichard // CHECK-MESSAGES-CHECK-HEADER-FILE: mylib.h:1:10: warning: inclusion of deprecated C++ header 'assert.h'; consider using 'cassert' instead [modernize-deprecated-headers] 4189a1d03eSRichard 4289a1d03eSRichard namespace wrapping { 4389a1d03eSRichard extern "C" { 4489a1d03eSRichard #include <assert.h> // no-warning 4589a1d03eSRichard #include <mylib.h> // no-warning 4689a1d03eSRichard #include <stdbool.h> // no-warning 4789a1d03eSRichard } 4889a1d03eSRichard } // namespace wrapping 4989a1d03eSRichard 5089a1d03eSRichard extern "C" { 5189a1d03eSRichard namespace wrapped { 5289a1d03eSRichard #include <assert.h> // no-warning 5389a1d03eSRichard #include <mylib.h> // no-warning 5489a1d03eSRichard #include <stdbool.h> // no-warning 5589a1d03eSRichard } // namespace wrapped 5689a1d03eSRichard } 5789a1d03eSRichard 5889a1d03eSRichard namespace wrapping { 5989a1d03eSRichard extern "C" { 6089a1d03eSRichard namespace wrapped { 6189a1d03eSRichard #include <assert.h> // no-warning 6289a1d03eSRichard #include <mylib.h> // no-warning 6389a1d03eSRichard #include <stdbool.h> // no-warning 6489a1d03eSRichard } // namespace wrapped 6589a1d03eSRichard } 6689a1d03eSRichard } // namespace wrapping 6789a1d03eSRichard 6889a1d03eSRichard EXTERN_C { 6989a1d03eSRichard #include <assert.h> // no-warning 7089a1d03eSRichard #include <mylib.h> // no-warning 7189a1d03eSRichard #include <stdbool.h> // no-warning 7289a1d03eSRichard } 73