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