You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.2 KiB
59 lines
1.2 KiB
// RUN: %check_clang_tidy %s bugprone-branch-clone %t -- -- -std=c++17
|
|
|
|
void handle(int);
|
|
|
|
template <unsigned Index>
|
|
void shouldFail() {
|
|
if constexpr (Index == 0) {
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:29: warning: repeated branch in conditional chain [bugprone-branch-clone]
|
|
handle(0);
|
|
} else if constexpr (Index == 1) {
|
|
handle(1);
|
|
} else {
|
|
handle(0);
|
|
}
|
|
}
|
|
|
|
template <unsigned Index>
|
|
void shouldPass() {
|
|
if constexpr (Index == 0) {
|
|
handle(0);
|
|
} else if constexpr (Index == 1) {
|
|
handle(1);
|
|
} else {
|
|
handle(2);
|
|
}
|
|
}
|
|
|
|
void shouldFailNonTemplate() {
|
|
constexpr unsigned Index = 1;
|
|
if constexpr (Index == 0) {
|
|
// CHECK-MESSAGES: :[[@LINE-1]]:29: warning: repeated branch in conditional chain [bugprone-branch-clone]
|
|
handle(0);
|
|
} else if constexpr (Index == 1) {
|
|
handle(1);
|
|
} else {
|
|
handle(0);
|
|
}
|
|
}
|
|
|
|
void shouldPassNonTemplate() {
|
|
constexpr unsigned Index = 1;
|
|
if constexpr (Index == 0) {
|
|
handle(0);
|
|
} else if constexpr (Index == 1) {
|
|
handle(1);
|
|
} else {
|
|
handle(2);
|
|
}
|
|
}
|
|
|
|
void run() {
|
|
shouldFail<0>();
|
|
shouldFail<1>();
|
|
shouldFail<2>();
|
|
shouldPass<0>();
|
|
shouldPass<1>();
|
|
shouldPass<2>();
|
|
}
|