brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 7f8f164 Raw
185 lines · cpp
1// RUN: %check_clang_tidy -std=c++14,c++17 %s readability-use-anyofallof %t -- -- -fexceptions2// FIXME: Fix the checker to work in C++20 mode.3 4bool good_any_of() {5  int v[] = {1, 2, 3};6  // CHECK-MESSAGES: :[[@LINE+1]]:3: warning: replace loop by 'std::any_of()' [readability-use-anyofallof]7  for (int i : v)8    if (i)9      return true;10  return false;11}12 13bool cond(int i);14 15bool good_any_of2() {16  int v[] = {1, 2, 3};17  for (int i : v) {18    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: replace loop by 'std::any_of()'19    int k = i / 2;20    if (cond(k))21      return true;22  }23  return false;24}25 26bool good_any_of3() {27  int v[] = {1, 2, 3};28  for (int i : v) {29    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: replace loop by 'std::any_of()'30    if (i == 3)31      continue;32    if (i)33      return true;34  }35 36  return false;37}38 39bool good_any_of_use_external(int comp) {40  int v[] = {1, 2, 3};41  for (int i : v) {42    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: replace loop by 'std::any_of()'43    if (i == comp)44      return true;45  }46 47  return false;48}49 50bool good_any_of_no_cond() {51  int v[] = {1, 2, 3};52  for (int i : v) {53    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: replace loop by 'std::any_of()'54    return true; // Not a real loop, but technically can become any_of.55  }56 57  return false;58}59 60bool good_any_of_local_modification() {61  int v[] = {1, 2, 3};62  for (int i : v) {63    int j = i;64    j++; // FIXME: Any non-const use disables check.65    if (j > 3)66      return true;67  }68 69  return false;70}71 72bool good_any_of_throw() {73  int v[] = {1, 2, 3};74  for (int i : v) {75    // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: replace loop by 'std::any_of()'76    if (i > 3)77      return true;78    if (i == 42)79      throw 0;80  }81 82  return false;83}84 85bool bad_any_of1() {86  int v[] = {1, 2, 3};87  for (int i : v) {88    if (i)89      return false; // bad constant90  }91  return false;92}93 94bool bad_any_of2() {95  int v[] = {1, 2, 3};96  for (int i : v)97    if (i)98      return true;99 100  return true; // bad return101}102 103bool bad_any_of3() {104  int v[] = {1, 2, 3};105  for (int i : v)106    if (i)107      return true;108    else109      return i / 2; // bad return110 111  return false;112}113 114bool bad_any_of_control_flow1() {115  int v[] = {1, 2, 3};116  for (int i : v) {117    break; // bad control flow118    if (i)119      return true;120  }121 122  return false;123}124 125bool bad_any_of_control_flow2() {126  int v[] = {1, 2, 3};127  for (int i : v) {128    goto end; // bad control flow129    if (i)130      return true;131  }132 133  end:134  return false;135}136 137bool bad_any_of4() {138  return false; // wrong order139 140  int v[] = {1, 2, 3};141  for (int i : v) {142    if (i)143      return true;144  }145}146 147bool bad_any_of5() {148  int v[] = {1, 2, 3};149  int j = 0;150  for (int i : v) {151    j++; // modifications152    if (i)153      return true;154  }155  return false;156}157 158bool bad_any_of6() {159  int v[] = {1, 2, 3};160  for (int i : v) {161    if (i)162      return true;163  }164  int j = 0; // Statements between loop and return165  j++;166  return false;167}168 169bool bad_any_of7() {170  int v[] = {1, 2, 3};171  for (int i : v) {172    i; // No 'return true' in body.173  }174  return false;175}176 177bool good_all_of() {178  int v[] = {1, 2, 3};179  // CHECK-MESSAGES: :[[@LINE+1]]:3: warning: replace loop by 'std::all_of()' [readability-use-anyofallof]180  for (int i : v)181    if (i)182      return false;183  return true;184}185