xref: /llvm-project/clang-tools-extra/test/clang-tidy/infrastructure/file-filter.cpp (revision cc54129b983799e1aaea77aa0ff3040dc30cbc8c)
1 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='' %s -- -I %S/Inputs/file-filter -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck %s
2 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='' -quiet %s -- -I %S/Inputs/file-filter -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK-QUIET %s
3 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='.*' %s -- -I %S/Inputs/file-filter -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK2 %s
4 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='.*' -quiet %s -- -I %S/Inputs/file-filter -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK2-QUIET %s
5 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='header2\.h' %s -- -I %S/Inputs/file-filter -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK3 %s
6 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='header2\.h' -quiet %s -- -I %S/Inputs/file-filter -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK3-QUIET %s
7 // FIXME: "-I %S/Inputs/file-filter/system/.." must be redundant.
8 //       On Win32, file-filter/system\system-header1.h precedes
9 //       file-filter\header*.h due to code order between '/' and '\\'.
10 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='.*' -system-headers %s -- -I %S/Inputs/file-filter/system/.. -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK4 %s
11 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='.*' -system-headers -quiet %s -- -I %S/Inputs/file-filter/system/.. -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK4-QUIET %s
12 // RUN: clang-tidy -checks='-*,cppcoreguidelines-pro-type-cstyle-cast' -header-filter='.*' -system-headers %s -- -I %S/Inputs/file-filter/system/.. -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK5 %s
13 // RUN: clang-tidy -checks='-*,cppcoreguidelines-pro-type-cstyle-cast' -header-filter='.*' %s -- -I %S/Inputs/file-filter/system/.. -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK5-NO-SYSTEM-HEADERS %s
14 // RUN: clang-tidy -checks='-*,google-explicit-constructor' -header-filter='.*' -exclude-header-filter='header1\.h' %s -- -I %S/Inputs/file-filter/ -isystem %S/Inputs/file-filter/system 2>&1 | FileCheck --check-prefix=CHECK6 %s
15 
16 #include "header1.h"
17 // CHECK-NOT: warning:
18 // CHECK-QUIET-NOT: warning:
19 // CHECK2: header1.h:1:12: warning: single-argument constructors must be marked explicit
20 // CHECK2-QUIET: header1.h:1:12: warning: single-argument constructors must be marked explicit
21 // CHECK3-NOT: warning:
22 // CHECK3-QUIET-NOT: warning:
23 // CHECK4: header1.h:1:12: warning: single-argument constructors
24 // CHECK4-QUIET: header1.h:1:12: warning: single-argument constructors
25 // CHECK6-NOT: warning:
26 
27 #include "header2.h"
28 // CHECK-NOT: warning:
29 // CHECK-QUIET-NOT: warning:
30 // CHECK2: header2.h:1:12: warning: single-argument constructors
31 // CHECK2-QUIET: header2.h:1:12: warning: single-argument constructors
32 // CHECK3: header2.h:1:12: warning: single-argument constructors
33 // CHECK3-QUIET: header2.h:1:12: warning: single-argument constructors
34 // CHECK4: header2.h:1:12: warning: single-argument constructors
35 // CHECK4-QUIET: header2.h:1:12: warning: single-argument constructors
36 // CHECK6: header2.h:1:12: warning: single-argument constructors
37 
38 #include <system-header.h>
39 // CHECK-NOT: warning:
40 // CHECK-QUIET-NOT: warning:
41 // CHECK2-NOT: warning:
42 // CHECK2-QUIET-NOT: warning:
43 // CHECK3-NOT: warning:
44 // CHECK3-QUIET-NOT: warning:
45 // CHECK4: system-header.h:1:12: warning: single-argument constructors
46 // CHECK4-QUIET: system-header.h:1:12: warning: single-argument constructors
47 // CHECK6-NOT: warning:
48 
49 class A { A(int); };
50 // CHECK: :[[@LINE-1]]:11: warning: single-argument constructors
51 // CHECK-QUIET: :[[@LINE-2]]:11: warning: single-argument constructors
52 // CHECK2: :[[@LINE-3]]:11: warning: single-argument constructors
53 // CHECK2-QUIET: :[[@LINE-4]]:11: warning: single-argument constructors
54 // CHECK3: :[[@LINE-5]]:11: warning: single-argument constructors
55 // CHECK3-QUIET: :[[@LINE-6]]:11: warning: single-argument constructors
56 // CHECK4: :[[@LINE-7]]:11: warning: single-argument constructors
57 // CHECK4-QUIET: :[[@LINE-8]]:11: warning: single-argument constructors
58 // CHECK6: :[[@LINE-9]]:11: warning: single-argument constructors
59 
60 // CHECK-NOT: warning:
61 // CHECK-QUIET-NOT: warning:
62 // CHECK2-NOT: warning:
63 // CHECK2-QUIET-NOT: warning:
64 // CHECK3-NOT: warning:
65 // CHECK3-QUIET-NOT: warning:
66 // CHECK4-NOT: warning:
67 // CHECK4-QUIET-NOT: warning:
68 
69 // CHECK: Suppressed 3 warnings (3 in non-user code)
70 // CHECK: Use -header-filter=.* to display errors from all non-system headers.
71 // CHECK-QUIET-NOT: Suppressed
72 // CHECK2: Suppressed 1 warnings (1 in non-user code)
73 // CHECK2: Use -header-filter=.* {{.*}}
74 // CHECK2-QUIET-NOT: Suppressed
75 // CHECK3: Suppressed 2 warnings (2 in non-user code)
76 // CHECK3: Use -header-filter=.* {{.*}}
77 // CHECK3-QUIET-NOT: Suppressed
78 // CHECK4-NOT: Suppressed {{.*}} warnings
79 // CHECK4-NOT: Use -header-filter=.* {{.*}}
80 // CHECK4-QUIET-NOT: Suppressed
81 // CHECK6: Suppressed 2 warnings (2 in non-user code)
82 // CHECK6: Use -header-filter=.* {{.*}}
83 
84 int x = 123;
85 auto x_ptr = TO_FLOAT_PTR(&x);
86 // CHECK5: :[[@LINE-1]]:14: warning: do not use C-style cast to convert between unrelated types
87 // CHECK5-NO-SYSTEM-HEADERS-NOT: :[[@LINE-2]]:14: warning: do not use C-style cast to convert between unrelated types
88