forked from OSchip/llvm-project
46 lines
2.0 KiB
C++
46 lines
2.0 KiB
C++
// RUN: %check_clang_tidy -check-suffix=DEFAULT %s \
|
|
// RUN: cppcoreguidelines-narrowing-conversions %t -- \
|
|
// RUN: -config='{CheckOptions: [ \
|
|
// RUN: ]}'
|
|
|
|
// RUN: %check_clang_tidy -check-suffix=DISABLED %s \
|
|
// RUN: cppcoreguidelines-narrowing-conversions %t -- \
|
|
// RUN: -config='{CheckOptions: [ \
|
|
// RUN: {key: cppcoreguidelines-narrowing-conversions.WarnOnEquivalentBitWidth, value: 0} \
|
|
// RUN: ]}'
|
|
|
|
void narrowing_equivalent_bitwidth() {
|
|
int i;
|
|
unsigned int ui;
|
|
i = ui;
|
|
// CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [cppcoreguidelines-narrowing-conversions]
|
|
// DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
|
|
|
|
float f;
|
|
i = f;
|
|
// CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'float' to 'int' [cppcoreguidelines-narrowing-conversions]
|
|
// DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
|
|
|
|
f = i;
|
|
// CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'int' to 'float' [cppcoreguidelines-narrowing-conversions]
|
|
// DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
|
|
|
|
long long ll;
|
|
double d;
|
|
ll = d;
|
|
// CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:8: warning: narrowing conversion from 'double' to 'long long' [cppcoreguidelines-narrowing-conversions]
|
|
// DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
|
|
|
|
d = ll;
|
|
// CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'long long' to 'double' [cppcoreguidelines-narrowing-conversions]
|
|
// DISABLED: Warning disabled with WarnOnEquivalentBitWidth=0.
|
|
}
|
|
|
|
void most_narrowing_is_not_ok() {
|
|
int i;
|
|
long long ui;
|
|
i = ui;
|
|
// CHECK-MESSAGES-DEFAULT: :[[@LINE-1]]:7: warning: narrowing conversion from 'long long' to signed type 'int' is implementation-defined [cppcoreguidelines-narrowing-conversions]
|
|
// CHECK-MESSAGES-DISABLED: :[[@LINE-2]]:7: warning: narrowing conversion from 'long long' to signed type 'int' is implementation-defined [cppcoreguidelines-narrowing-conversions]
|
|
}
|