1 // RUN: %check_clang_tidy -check-suffix=DEFAULT %s \
2 // RUN: bugprone-narrowing-conversions %t --
3 
4 // RUN: %check_clang_tidy -check-suffix=DISABLED %s \
5 // RUN: bugprone-narrowing-conversions %t -- \
6 // RUN: -config='{CheckOptions: { \
7 // RUN:   bugprone-narrowing-conversions.WarnOnEquivalentBitWidth: 0}}'
8 
9 void narrowing_equivalent_bitwidth() {
10   int i;
11   unsigned int ui;
12   i = ui;
13   // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
14   // DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
15 
16   float f;
17   i = f;
18   // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'float' to 'int' [bugprone-narrowing-conversions]
19   // DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
20 
21   f = i;
22   // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'int' to 'float' [bugprone-narrowing-conversions]
23   // DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
24 
25   long long ll;
26   double d;
27   ll = d;
28   // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:8: warning: narrowing conversion from 'double' to 'long long' [bugprone-narrowing-conversions]
29   // DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
30 
31   d = ll;
32   // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'long long' to 'double' [bugprone-narrowing-conversions]
33   // DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
34 }
35 
36 void most_narrowing_is_not_ok() {
37   int i;
38   long long ui;
39   i = ui;
40   // CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'long long' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
41   // CHECK-MESSAGES-DISABLED: :[[@LINE-2]]:7: warning: narrowing conversion from 'long long' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions]
42 }
43