xref: /llvm-project/clang-tools-extra/test/clang-tidy/checkers/misc/header-include-cycle.cpp (revision 5523fefb01c282c4cbcaf6314a9aaf658c6c145f)
17f6e0052SPiotr Zegar // RUN: rm -rf %T/misc-header-include-cycle-headers
27f6e0052SPiotr Zegar // RUN: mkdir %T/misc-header-include-cycle-headers
37f6e0052SPiotr Zegar // RUN: cp -r %S/Inputs/header-include-cycle* %T/misc-header-include-cycle-headers/
47f6e0052SPiotr Zegar // RUN: mkdir %T/misc-header-include-cycle-headers/system
57f6e0052SPiotr Zegar // RUN: cp -r %S/Inputs/system/header-include-cycle* %T/misc-header-include-cycle-headers/system
67f6e0052SPiotr Zegar // RUN: cp %s %T/header-include-cycle.cpp
7*5523fefbSJan Svoboda // RUN: clang-tidy %T%{fs-sep}header-include-cycle.cpp -checks='-*,misc-header-include-cycle' -header-filter=.* \
81af159e9SPiotr Zegar // RUN: -config="{CheckOptions: {misc-header-include-cycle.IgnoredFilesList: 'header-include-cycle.self-e.hpp'}}" \
9*5523fefbSJan Svoboda // RUN: -- -I%T%{fs-sep}misc-header-include-cycle-headers -isystem %T%{fs-sep}misc-header-include-cycle-headers%{fs-sep}system \
10*5523fefbSJan Svoboda // RUN: --include %T%{fs-sep}misc-header-include-cycle-headers%{fs-sep}header-include-cycle.self-i.hpp | FileCheck %s \
117f6e0052SPiotr Zegar // RUN: -check-prefix=CHECK-MESSAGES "-implicit-check-not={{note|warning|error}}:" --dump-input=fail
127f6e0052SPiotr Zegar // RUN: rm -rf %T/misc-header-include-cycle-headers
137f6e0052SPiotr Zegar 
147f6e0052SPiotr Zegar #ifndef MAIN_GUARD
157f6e0052SPiotr Zegar #define MAIN_GUARD
167f6e0052SPiotr Zegar 
177f6e0052SPiotr Zegar #include "header-include-cycle.cpp"
187f6e0052SPiotr Zegar // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: direct self-inclusion of header file 'header-include-cycle.cpp' [misc-header-include-cycle]
197f6e0052SPiotr Zegar 
207f6e0052SPiotr Zegar #include <header-include-cycle.first-d.hpp>
217f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.fourth-d.hpp:3:10: warning: circular header file dependency detected while including 'header-include-cycle.first-d.hpp', please check the include path [misc-header-include-cycle]
227f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.third-d.hpp:3:10: note: 'header-include-cycle.fourth-d.hpp' included from here
237f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.second-d.hpp:3:10: note: 'header-include-cycle.third-d.hpp' included from here
247f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.first-d.hpp:3:10: note: 'header-include-cycle.second-d.hpp' included from here
257f6e0052SPiotr Zegar // CHECK-MESSAGES: :[[@LINE-5]]:10: note: 'header-include-cycle.first-d.hpp' included from here
267f6e0052SPiotr Zegar 
277f6e0052SPiotr Zegar #include <header-include-cycle.first.hpp>
287f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.fourth.hpp:2:10: warning: circular header file dependency detected while including 'header-include-cycle.first.hpp', please check the include path [misc-header-include-cycle]
297f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.third.hpp:2:10: note: 'header-include-cycle.fourth.hpp' included from here
307f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.second.hpp:2:10: note: 'header-include-cycle.third.hpp' included from here
317f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.first.hpp:2:10: note: 'header-include-cycle.second.hpp' included from here
327f6e0052SPiotr Zegar // CHECK-MESSAGES: :[[@LINE-5]]:10: note: 'header-include-cycle.first.hpp' included from here
337f6e0052SPiotr Zegar 
347f6e0052SPiotr Zegar #include <header-include-cycle.self-d.hpp>
357f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.self-d.hpp:3:10: warning: direct self-inclusion of header file 'header-include-cycle.self-d.hpp' [misc-header-include-cycle]
367f6e0052SPiotr Zegar 
377f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.self-i.hpp:2:10: warning: direct self-inclusion of header file 'header-include-cycle.self-i.hpp' [misc-header-include-cycle]
387f6e0052SPiotr Zegar 
397f6e0052SPiotr Zegar #include <header-include-cycle.self-o.hpp>
407f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.self-n.hpp:2:10: warning: direct self-inclusion of header file 'header-include-cycle.self-n.hpp' [misc-header-include-cycle]
417f6e0052SPiotr Zegar 
427f6e0052SPiotr Zegar #include <header-include-cycle.self.hpp>
437f6e0052SPiotr Zegar // CHECK-MESSAGES: header-include-cycle.self.hpp:2:10: warning: direct self-inclusion of header file 'header-include-cycle.self.hpp' [misc-header-include-cycle]
447f6e0052SPiotr Zegar 
457f6e0052SPiotr Zegar // Should not warn about second include of guarded headers:
467f6e0052SPiotr Zegar #include <header-include-cycle.first.hpp>
477f6e0052SPiotr Zegar #include <header-include-cycle.first-d.hpp>
487f6e0052SPiotr Zegar #include <header-include-cycle.self.hpp>
497f6e0052SPiotr Zegar #include <header-include-cycle.self-d.hpp>
507f6e0052SPiotr Zegar #include <header-include-cycle.self-o.hpp>
517f6e0052SPiotr Zegar #include <header-include-cycle.self-n.hpp>
527f6e0052SPiotr Zegar 
537f6e0052SPiotr Zegar // Should not warn about system includes
547f6e0052SPiotr Zegar #include <header-include-cycle.first-s.hpp>
557f6e0052SPiotr Zegar #include <header-include-cycle.self-s.hpp>
567f6e0052SPiotr Zegar 
577f6e0052SPiotr Zegar // Should not warn about this excluded header
587f6e0052SPiotr Zegar #include <header-include-cycle.self-e.hpp>
597f6e0052SPiotr Zegar #endif
60