brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · fb1bebb Raw
66 lines · cpp
1// RUN: %check_clang_tidy %s bugprone-branch-clone %t -- -- -std=c++172 3void handle(int);4 5void testSwitchFallthroughAttribute(int value) {6  switch(value) {7    case 1: [[fallthrough]];8    case 2: [[fallthrough]];9    case 3:10      handle(value);11      break;12    default:13      break;14  }15}16 17void testSwitchFallthroughAttributeAndBraces(int value) {18  switch(value) {19    case 1: { [[fallthrough]]; }20    case 2: { [[fallthrough]]; }21    case 3: {22      handle(value);23      break;24    }25    default: {26      break;27    }28  }29}30 31void testSwitchWithFallthroughAttributeAndCode(int value) {32  switch(value) {33    case 1: value += 1; [[fallthrough]];34    case 2: value += 1; [[fallthrough]];35    case 3:36      handle(value);37      break;38    default:39      break;40  }41}42 43void testSwitchWithFallthroughAndCode(int value) {44  switch(value) {45    // CHECK-MESSAGES: :[[@LINE+1]]:5: warning: switch has 2 consecutive identical branches [bugprone-branch-clone]46    case 1: value += 1;47    case 2: value += 1;48    // CHECK-MESSAGES: :[[@LINE-1]]:23: note: last of these clones ends here49    case 3:50      handle(value);51      break;52    default:53      break;54  }55}56 57void testSwitchFallthroughAttributeIntoDefault(int value) {58  switch(value) {59    case 1: [[fallthrough]];60    case 2: [[fallthrough]];61    default:62      handle(value);63      break;64  }65}66