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