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