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
49class 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
84int x = 123;
85auto 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

source code of clang-tools-extra/test/clang-tidy/infrastructure/file-filter.cpp