brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · bffb7f5 Raw
80 lines · cpp
1// RUN: %check_clang_tidy %s modernize-loop-convert %t2 3template <class T>4struct Vector {5  using iterator = T*;6  unsigned size() const;7  const T &operator[](int) const;8  T &operator[](int);9  T *begin();10  T *end();11  const T *begin() const;12  const T *end() const;13};14 15template <typename T>16void copyArg(T);17 18class TestArrayOfVector {19  Vector<int> W[2];20 21  void foo() const {22    for (int I = 0; I < W[0].size(); ++I) {23      if (W[0][I])24        copyArg(W[0][I]);25    }26    // CHECK-MESSAGES: :[[@LINE-4]]:5: warning: use range-based for loop27    // CHECK-FIXES: for (int I : W[0]) {28    // CHECK-FIXES-NEXT: if (I)29    // CHECK-FIXES-NEXT: copyArg(I);30  }31};32 33class TestVectorOfVector {34  Vector<Vector<int>> X;35 36  void foo() const {37    for (int J = 0; J < X[0].size(); ++J) {38      if (X[0][J])39        copyArg(X[0][J]);40    }41    // CHECK-MESSAGES: :[[@LINE-4]]:5: warning: use range-based for loop42    // CHECK-FIXES: for (int J : X[0]) {43    // CHECK-FIXES-NEXT: if (J)44    // CHECK-FIXES-NEXT: copyArg(J);45  }46};47 48void testVectorOfVectorOfVector() {49  Vector<Vector<Vector<int>>> Y;50  for (int J = 0; J < Y[3].size(); ++J) {51    if (Y[3][J][7])52      copyArg(Y[3][J][8]);53  }54  // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop55  // CHECK-FIXES: for (auto & J : Y[3]) {56  // CHECK-FIXES-NEXT: if (J[7])57  // CHECK-FIXES-NEXT: copyArg(J[8]);58 59  for (int J = 0; J < Y[3][4].size(); ++J) {60    if (Y[3][4][J])61      copyArg(Y[3][4][J]);62  }63  // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop64  // CHECK-FIXES: for (int J : Y[3][4]) {65  // CHECK-FIXES-NEXT: if (J)66  // CHECK-FIXES-NEXT: copyArg(J);67}68 69void testVectorOfVectorIterator() {70  Vector<Vector<int>> Z;71  for (Vector<int>::iterator it = Z[4].begin(); it != Z[4].end();  ++it) {72    if (*it)73      copyArg(*it);74  }75  // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop76  // CHECK-FIXES: for (int & it : Z[4]) {77  // CHECK-FIXES-NEXT: if (it)78  // CHECK-FIXES-NEXT: copyArg(it);79}80