brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · dab58a3 Raw
50 lines · cpp
1// RUN: %check_clang_tidy -std=c++17-or-later %s modernize-loop-convert %t2 3struct S {4  int a{0};5  int b{1};6};7 8template <typename T, unsigned long Size>9struct array {10 11  T *begin() { return data; }12  const T* cbegin() const { return data; }13  T *end() { return data + Size; }14  const T *cend() const { return data + Size; }15 16  T data[Size];17};18 19const int N = 6;20S Arr[N];21 22void f() {23  int Sum = 0;24 25  for (int I = 0; I < N; ++I) {26    auto [a, b] = Arr[I];27    Sum += a + b;28  }29  // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead [modernize-loop-convert]30  // CHECK-FIXES: for (auto [a, b] : Arr) {31  // CHECK-FIXES-NEXT: Sum += a + b;32 33  array<S, N> arr;34  for (auto* It = arr.begin(); It != arr.end(); ++It) {35    auto [a, b] = *It;36    Sum = a + b;37  }38  // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead [modernize-loop-convert]39  // CHECK-FIXES: for (auto [a, b] : arr) {40  // CHECK-FIXES-NEXT: Sum = a + b;41 42  for (auto* It = arr.cbegin(); It != arr.cend(); ++It) {43    auto [a, b] = *It;44    Sum = a + b;45  }46  // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead [modernize-loop-convert]47  // CHECK-FIXES: for (auto [a, b] : arr) {48  // CHECK-FIXES-NEXT: Sum = a + b;49}50