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