diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/checkers/modernize')
24 files changed, 318 insertions, 311 deletions
diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/avoid-bind.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/avoid-bind.cpp index 342c96a..6aa7d48 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/avoid-bind.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/avoid-bind.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes -std=c++14-or-later %s modernize-avoid-bind %t +// RUN: %check_clang_tidy -std=c++14-or-later %s modernize-avoid-bind %t namespace std { inline namespace impl { @@ -229,19 +229,19 @@ void testFunctionObjects() { D *e = nullptr; auto AAA = std::bind(d, 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto AAA = [d] { d(1, 2); } + // CHECK-FIXES: auto AAA = [d] { d(1, 2); }; auto BBB = std::bind(*e, 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto BBB = [e] { (*e)(1, 2); } + // CHECK-FIXES: auto BBB = [e] { (*e)(1, 2); }; auto CCC = std::bind(D{}, 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto CCC = [] { D{}(1, 2); } + // CHECK-FIXES: auto CCC = [] { D{}(1, 2); }; auto DDD = std::bind(D(), 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto DDD = [] { D()(1, 2); } + // CHECK-FIXES: auto DDD = [] { D()(1, 2); }; auto EEE = std::bind(*D::create(), 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: prefer a lambda to std::bind @@ -384,11 +384,11 @@ struct E { auto III = std::bind(&D::operator(), d, 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto III = [d] { (*d)(1, 2); } + // CHECK-FIXES: auto III = [d] { (*d)(1, 2); }; auto JJJ = std::bind(&D::operator(), &dd, 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto JJJ = [ObjectPtr = &dd] { (*ObjectPtr)(1, 2); } + // CHECK-FIXES: auto JJJ = [ObjectPtr = &dd] { (*ObjectPtr)(1, 2); }; auto KKK = std::bind(&D::operator(), _1, 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind @@ -396,11 +396,11 @@ struct E { auto LLL = std::bind(&D::operator bool, d); // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto LLL = [d] { return d->operator bool(); } + // CHECK-FIXES: auto LLL = [d] { return d->operator bool(); }; auto MMM = std::bind(&E::operator(), this, 1, 2); // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind - // CHECK-FIXES: auto MMM = [this] { return (*this)(1, 2); } + // CHECK-FIXES: auto MMM = [this] { return (*this)(1, 2); }; } }; diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/concat-nested-namespaces.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/concat-nested-namespaces.cpp index 78adbeb..35cb550 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/concat-nested-namespaces.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/concat-nested-namespaces.cpp @@ -1,10 +1,10 @@ // RUN: mkdir -p %t.dir // RUN: cp %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h %t.dir/modernize-concat-nested-namespaces.h -// RUN: %check_clang_tidy --match-partial-fixes -std=c++17 -check-suffix=NORMAL %s modernize-concat-nested-namespaces %t.dir/code -- -header-filter=".*" -- -I %t.dir +// RUN: %check_clang_tidy -std=c++17 -check-suffix=NORMAL %s modernize-concat-nested-namespaces %t.dir/code -- -header-filter=".*" -- -I %t.dir // RUN: FileCheck -input-file=%t.dir/modernize-concat-nested-namespaces.h %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h -check-prefix=CHECK-FIXES // Restore header file and re-run with c++20: // RUN: cp %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h %t.dir/modernize-concat-nested-namespaces.h -// RUN: %check_clang_tidy --match-partial-fixes -std=c++20 -check-suffixes=NORMAL,CPP20 %s modernize-concat-nested-namespaces %t.dir/code -- -header-filter=".*" -- -I %t.dir +// RUN: %check_clang_tidy -std=c++20 -check-suffixes=NORMAL,CPP20 %s modernize-concat-nested-namespaces %t.dir/code -- -header-filter=".*" -- -I %t.dir // RUN: FileCheck -input-file=%t.dir/modernize-concat-nested-namespaces.h %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h -check-prefix=CHECK-FIXES #include "modernize-concat-nested-namespaces.h" @@ -38,16 +38,16 @@ void t(); namespace n9 { namespace n10 { // CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces] -// CHECK-FIXES-NORMAL: namespace n9::n10 +// CHECK-FIXES-NORMAL: namespace n9::n10 { void t(); } // namespace n10 } // namespace n9 -// CHECK-FIXES-NORMAL: } +// CHECK-FIXES-NORMAL: } // namespace n9::n10 namespace n11 { namespace n12 { // CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces] -// CHECK-FIXES-NORMAL: namespace n11::n12 +// CHECK-FIXES-NORMAL: namespace n11::n12 { namespace n13 { void t(); } @@ -71,7 +71,7 @@ namespace n18 { namespace n19 { namespace n20 { // CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-3]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces] -// CHECK-FIXES-NORMAL: namespace n18::n19::n20 +// CHECK-FIXES-NORMAL: namespace n18::n19::n20 { void t(); } // namespace n20 } // namespace n19 @@ -94,11 +94,11 @@ namespace { namespace n24 { namespace n25 { // CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces] -// CHECK-FIXES-NORMAL: namespace n24::n25 +// CHECK-FIXES-NORMAL: namespace n24::n25 { void t(); } // namespace n25 } // namespace n24 -// CHECK-FIXES-NORMAL: } +// CHECK-FIXES-NORMAL: } // namespace n24::n25 } // namespace } // namespace n23 @@ -136,7 +136,7 @@ void t(); namespace n39 { namespace n40 { // CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces] -// CHECK-FIXES-NORMAL: namespace n39::n40 +// CHECK-FIXES-NORMAL: namespace n39::n40 { #ifdef IEXIST void t() {} #endif @@ -147,7 +147,7 @@ void t() {} namespace n41 { namespace n42 { // CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces] -// CHECK-FIXES-NORMAL: namespace n41::n42 +// CHECK-FIXES-NORMAL: namespace n41::n42 { #ifdef IDONTEXIST void t() {} #endif diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-basic.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-basic.cpp index 419e7f8..2f744eb 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-basic.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-basic.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-loop-convert %t -- -- -I %S/Inputs/loop-convert +// RUN: %check_clang_tidy %s modernize-loop-convert %t -- -- -I %S/Inputs/loop-convert #include "structures.h" @@ -18,7 +18,7 @@ void f() { int K; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead [modernize-loop-convert] - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: Sum += I; // CHECK-FIXES-NEXT: int K; @@ -27,7 +27,7 @@ void f() { Sum += Arr[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -36,7 +36,7 @@ void f() { int Y = Arr[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: int X = I; // CHECK-FIXES-NEXT: int Y = I + 2; @@ -45,7 +45,7 @@ void f() { X = Arr[I]; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: int X = N; // CHECK-FIXES-NEXT: X = I; @@ -53,7 +53,7 @@ void f() { Arr[I] += 1; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: I += 1; for (int I = 0; I < N; ++I) { @@ -61,7 +61,7 @@ void f() { Arr[I]++; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: int X = I + 2; // CHECK-FIXES-NEXT: I++; @@ -69,14 +69,14 @@ void f() { Arr[I] = 4 + Arr[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: I = 4 + I; for (int I = 0; I < NMinusOne + 1; ++I) { Sum += Arr[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: Sum += I; for (int I = 0; I < N; ++I) { @@ -84,7 +84,7 @@ void f() { Sum += Arr[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: printf("Fibonacci number %d has address %p\n", I, &I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -96,7 +96,7 @@ void f() { size += sizeof((Matrix[I])); } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Matrix) + // CHECK-FIXES: for (auto & I : Matrix) { // CHECK-FIXES-NEXT: size += sizeof(I); // CHECK-FIXES-NEXT: size += sizeof I; // CHECK-FIXES-NEXT: size += sizeof(I); @@ -106,7 +106,7 @@ void f() { Teas[I].g(); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & Tea : Teas) + // CHECK-FIXES: for (auto & Tea : Teas) { // CHECK-FIXES-NEXT: Tea.g(); for (int I = 0; N > I; ++I) { @@ -114,7 +114,7 @@ void f() { Sum += Arr[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: printf("Fibonacci number %d has address %p\n", I, &I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -123,7 +123,7 @@ void f() { Sum += Arr[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: printf("Fibonacci number %d has address %p\n", I, &I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -132,7 +132,7 @@ void f() { Sum += Arr[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: printf("Fibonacci number %d has address %p\n", I, &I); // CHECK-FIXES-NEXT: Sum += I + 2; } @@ -142,7 +142,7 @@ const int *constArray() { printf("2 * %d = %d\n", ConstArr[I], ConstArr[I] + ConstArr[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : ConstArr) + // CHECK-FIXES: for (int I : ConstArr) { // CHECK-FIXES-NEXT: printf("2 * %d = %d\n", I, I + I); const NonTriviallyCopyable NonCopy[N]{}; @@ -150,7 +150,7 @@ const int *constArray() { printf("2 * %d = %d\n", NonCopy[I].X, NonCopy[I].X + NonCopy[I].X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (const auto & I : NonCopy) + // CHECK-FIXES: for (const auto & I : NonCopy) { // CHECK-FIXES-NEXT: printf("2 * %d = %d\n", I.X, I.X + I.X); const TriviallyCopyableButBig Big[N]{}; @@ -158,7 +158,7 @@ const int *constArray() { printf("2 * %d = %d\n", Big[I].X, Big[I].X + Big[I].X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (const auto & I : Big) + // CHECK-FIXES: for (const auto & I : Big) { // CHECK-FIXES-NEXT: printf("2 * %d = %d\n", I.X, I.X + I.X); bool Something = false; @@ -167,7 +167,7 @@ const int *constArray() { return &ConstArr[I]; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (const int & I : ConstArr) + // CHECK-FIXES: for (const int & I : ConstArr) { // CHECK-FIXES-NEXT: if (Something) // CHECK-FIXES-NEXT: return &I; @@ -182,14 +182,14 @@ struct HasArr { printf("%d", Arr[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: printf("%d", I); for (int I = 0; I < N; ++I) { printf("%d", ValArr[I].X); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : ValArr) + // CHECK-FIXES: for (auto & I : ValArr) { // CHECK-FIXES-NEXT: printf("%d", I.X); } @@ -198,14 +198,14 @@ struct HasArr { printf("%d", this->Arr[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : this->Arr) + // CHECK-FIXES: for (int I : this->Arr) { // CHECK-FIXES-NEXT: printf("%d", I); for (int I = 0; I < N; ++I) { printf("%d", this->ValArr[I].X); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : this->ValArr) + // CHECK-FIXES: for (auto & I : this->ValArr) { // CHECK-FIXES-NEXT: printf("%d", I.X); } }; @@ -217,14 +217,14 @@ struct HasIndirectArr { printf("%d", HA.Arr[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : HA.Arr) + // CHECK-FIXES: for (int I : HA.Arr) { // CHECK-FIXES-NEXT: printf("%d", I); for (int I = 0; I < N; ++I) { printf("%d", HA.ValArr[I].X); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : HA.ValArr) + // CHECK-FIXES: for (auto & I : HA.ValArr) { // CHECK-FIXES-NEXT: printf("%d", I.X); } @@ -233,14 +233,14 @@ struct HasIndirectArr { printf("%d", this->HA.Arr[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : this->HA.Arr) + // CHECK-FIXES: for (int I : this->HA.Arr) { // CHECK-FIXES-NEXT: printf("%d", I); for (int I = 0; I < N; ++I) { printf("%d", this->HA.ValArr[I].X); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : this->HA.ValArr) + // CHECK-FIXES: for (auto & I : this->HA.ValArr) { // CHECK-FIXES-NEXT: printf("%d", I.X); } }; @@ -285,7 +285,7 @@ void f() { printf("I found %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : Tt) + // CHECK-FIXES: for (int & It : Tt) { // CHECK-FIXES-NEXT: printf("I found %d\n", It); // Do not crash because of Qq.begin() converting. Q::iterator converts with a @@ -295,7 +295,7 @@ void f() { printf("I found %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : Qq) + // CHECK-FIXES: for (int & It : Qq) { // CHECK-FIXES-NEXT: printf("I found %d\n", It); T *Pt; @@ -303,7 +303,7 @@ void f() { printf("I found %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : *Pt) + // CHECK-FIXES: for (int & It : *Pt) { // CHECK-FIXES-NEXT: printf("I found %d\n", It); S Ss; @@ -311,7 +311,7 @@ void f() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); S *Ps; @@ -319,42 +319,42 @@ void f() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & P : *Ps) + // CHECK-FIXES: for (auto & P : *Ps) { // CHECK-FIXES-NEXT: printf("s has value %d\n", P.X); for (S::const_iterator It = Ss.cbegin(), E = Ss.cend(); It != E; ++It) { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto It : Ss) + // CHECK-FIXES: for (auto It : Ss) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); for (S::iterator It = Ss.begin(), E = Ss.end(); It != E; ++It) { printf("s has value %d\n", It->X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); for (S::iterator It = Ss.begin(), E = Ss.end(); It != E; ++It) { It->X = 3; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: It.X = 3; for (S::iterator It = Ss.begin(), E = Ss.end(); It != E; ++It) { (*It).X = 3; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: It.X = 3; for (S::iterator It = Ss.begin(), E = Ss.end(); It != E; ++It) { It->nonConstFun(4, 5); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: It.nonConstFun(4, 5); U Uu; @@ -362,14 +362,14 @@ void f() { printf("s has value %d\n", It->X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Uu) + // CHECK-FIXES: for (auto & It : Uu) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); for (U::iterator It = Uu.begin(), E = Uu.end(); It != E; ++It) { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Uu) + // CHECK-FIXES: for (auto & It : Uu) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); for (U::iterator It = Uu.begin(), E = Uu.end(); It != E; ++It) { @@ -389,7 +389,7 @@ void f() { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : V) + // CHECK-FIXES: for (int & It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); for (dependent<int>::iterator It(V.begin()), E = V.end(); @@ -397,7 +397,7 @@ void f() { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : V) + // CHECK-FIXES: for (int & It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); doublyDependent<int, int> Intmap; @@ -406,7 +406,7 @@ void f() { printf("Intmap[%d] = %d", It->first, It->second); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Intmap) + // CHECK-FIXES: for (auto & It : Intmap) { // CHECK-FIXES: printf("Intmap[%d] = %d", It.first, It.second); // PtrSet's iterator dereferences by value so auto & can't be used. @@ -418,7 +418,7 @@ void f() { (void) *I; } // CHECK-MESSAGES: :[[@LINE-5]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (auto Val_int_ptr : Val_int_ptrs) + // CHECK-FIXES: for (auto Val_int_ptr : Val_int_ptrs) { } // This container uses an iterator where the dereference type is a typedef of @@ -432,7 +432,7 @@ void f() { (void) *I; } // CHECK-MESSAGES: :[[@LINE-5]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int & Int_ptr : Int_ptrs) + // CHECK-FIXES: for (int & Int_ptr : Int_ptrs) { } { @@ -451,49 +451,49 @@ void f() { printf("%d\n", (**I).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Dpp) + // CHECK-FIXES: for (auto & I : Dpp) { // CHECK-FIXES-NEXT: printf("%d\n", (*I).X); for (dependent<Val *>::iterator I = Dpp.begin(), E = Dpp.end(); I != E; ++I) { printf("%d\n", (*I)->X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Dpp) + // CHECK-FIXES: for (auto & I : Dpp) { // CHECK-FIXES-NEXT: printf("%d\n", I->X); for (S::iterator It = begin(Ss), E = end(Ss); It != E; ++It) { printf("s0 has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: printf("s0 has value %d\n", It.X); for (S::iterator It = std::begin(Ss), E = std::end(Ss); It != E; ++It) { printf("s1 has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: printf("s1 has value %d\n", It.X); for (S::iterator It = begin(*Ps), E = end(*Ps); It != E; ++It) { printf("s2 has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : *Ps) + // CHECK-FIXES: for (auto & It : *Ps) { // CHECK-FIXES-NEXT: printf("s2 has value %d\n", It.X); for (S::iterator It = begin(*Ps); It != end(*Ps); ++It) { printf("s3 has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : *Ps) + // CHECK-FIXES: for (auto & It : *Ps) { // CHECK-FIXES-NEXT: printf("s3 has value %d\n", It.X); for (S::const_iterator It = cbegin(Ss), E = cend(Ss); It != E; ++It) { printf("s4 has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto It : Ss) + // CHECK-FIXES: for (auto It : Ss) { // CHECK-FIXES-NEXT: printf("s4 has value %d\n", It.X); } @@ -507,7 +507,7 @@ void different_type() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto It : Ss) + // CHECK-FIXES: for (auto It : Ss) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); S *Ps; @@ -515,7 +515,7 @@ void different_type() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto P : *Ps) + // CHECK-FIXES: for (auto P : *Ps) { // CHECK-FIXES-NEXT: printf("s has value %d\n", P.X); dependent<int> V; @@ -524,7 +524,7 @@ void different_type() { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int It : V) + // CHECK-FIXES: for (int It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); for (dependent<int>::const_iterator It(V.begin()), E = V.end(); @@ -532,7 +532,7 @@ void different_type() { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int It : V) + // CHECK-FIXES: for (int It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); } @@ -634,7 +634,7 @@ void f() { Sum += V[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : V) + // CHECK-FIXES: for (int I : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -643,7 +643,7 @@ void f() { Sum += V.at(I) + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : V) + // CHECK-FIXES: for (int I : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -652,7 +652,7 @@ void f() { Sum += Pv->at(I) + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : *Pv) + // CHECK-FIXES: for (int I : *Pv) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -665,7 +665,7 @@ void f() { Sum += (*Pv)[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : *Pv) + // CHECK-FIXES: for (int I : *Pv) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -674,7 +674,7 @@ void f() { Sum += Cv->at(I) + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : *Cv) + // CHECK-FIXES: for (int I : *Cv) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -683,7 +683,7 @@ void f() { Sum += V[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : V) + // CHECK-FIXES: for (int I : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -692,7 +692,7 @@ void f() { Sum += V[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : V) + // CHECK-FIXES: for (int I : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -701,7 +701,7 @@ void f() { Sum += V[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : V) + // CHECK-FIXES: for (int I : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -710,7 +710,7 @@ void f() { Sum += VD[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : VD) + // CHECK-FIXES: for (int I : VD) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -719,7 +719,7 @@ void f() { Sum += V[I] + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : V) + // CHECK-FIXES: for (int I : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2; @@ -727,14 +727,14 @@ void f() { V[I] = 0; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : V) + // CHECK-FIXES: for (int & I : V) { // CHECK-FIXES-NEXT: I = 0; for (int I = 0, E = std::size(V); E != I; ++I) { V[I] = 0; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : V) + // CHECK-FIXES: for (int & I : V) { // CHECK-FIXES-NEXT: I = 0; // Although 'length' might be a valid free function, only size() is standardized @@ -748,7 +748,7 @@ void f() { Sum += Vals[I].X; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & Val : Vals) + // CHECK-FIXES: for (auto & Val : Vals) { // CHECK-FIXES-NEXT: Sum += Val.X; } @@ -760,7 +760,7 @@ void constness() { Sum += Constv[I].X + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (const auto & I : Constv) + // CHECK-FIXES: for (const auto & I : Constv) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I.X); // CHECK-FIXES-NEXT: Sum += I.X + 2; @@ -769,7 +769,7 @@ void constness() { Sum += Constv.at(I).X + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (const auto & I : Constv) + // CHECK-FIXES: for (const auto & I : Constv) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I.X); // CHECK-FIXES-NEXT: Sum += I.X + 2; @@ -778,7 +778,7 @@ void constness() { Sum += Pconstv->at(I).X + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (const auto & I : *Pconstv) + // CHECK-FIXES: for (const auto & I : *Pconstv) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I.X); // CHECK-FIXES-NEXT: Sum += I.X + 2; @@ -791,7 +791,7 @@ void constness() { Sum += (*Pconstv)[I].X + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (const auto & I : *Pconstv) + // CHECK-FIXES: for (const auto & I : *Pconstv) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I.X); // CHECK-FIXES-NEXT: Sum += I.X + 2; } @@ -804,14 +804,14 @@ void constRef(const dependent<int>& ConstVRef) { sum += ConstVRef[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : ConstVRef) + // CHECK-FIXES: for (int I : ConstVRef) { // CHECK-FIXES-NEXT: sum += I; for (auto I = ConstVRef.begin(), E = ConstVRef.end(); I != E; ++I) { sum += *I; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : ConstVRef) + // CHECK-FIXES: for (int I : ConstVRef) { // CHECK-FIXES-NEXT: sum += I; } @@ -889,7 +889,7 @@ void derefByValueTest() { printf("%d\n", DBV[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (unsigned int I : DBV) + // CHECK-FIXES: for (unsigned int I : DBV) { // CHECK-FIXES-NEXT: printf("%d\n", I); for (unsigned I = 0, E = DBV.size(); I < E; ++I) { @@ -897,7 +897,7 @@ void derefByValueTest() { printf("%d\n", DBV[I]); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (unsigned int I : DBV) + // CHECK-FIXES: for (unsigned int I : DBV) { // CHECK-FIXES-NEXT: auto f = [DBV, &I]() {}; // CHECK-FIXES-NEXT: printf("%d\n", I); } @@ -960,7 +960,7 @@ template <unsigned p> void _dependenceArrayTest() { for (unsigned j = 0; j < 3; ++j) printf("%d", test[j][i]); // CHECK-MESSAGES: :[[@LINE-2]]:5: warning: use range-based for loop instead - // CHECK-FIXES: (auto & j : test) + // CHECK-FIXES: for (auto & j : test) // CHECK-FIXES: printf("%d", j[i]); } void dependenceArrayTest() { @@ -992,13 +992,13 @@ void test() { auto V = [T = Arr[I]]() {}; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead [modernize-loop-convert] - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: auto V = [T = I]() {}; for (int I = 0; I < N; ++I) { auto V = [T = 10 + Arr[I]]() {}; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead [modernize-loop-convert] - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: auto V = [T = 10 + I]() {}; for (int I = 0; I < N; ++I) { diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-const.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-const.cpp index 6091f0a..59f472c 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-const.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-const.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-loop-convert %t +// RUN: %check_clang_tidy %s modernize-loop-convert %t struct Str { Str() = default; @@ -43,7 +43,7 @@ void memberFunctionsAndOperators() { Array[I].constMember(0); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead [modernize-loop-convert] - // CHECK-FIXES: for (auto I : Array) + // CHECK-FIXES: for (auto I : Array) { // CHECK-FIXES-NEXT: I.constMember(0); for (int I = 0; I < N; ++I) { @@ -51,14 +51,14 @@ void memberFunctionsAndOperators() { foo(); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto I : Array) + // CHECK-FIXES: for (auto I : Array) { // CHECK-FIXES-NEXT: if (I < OtherStr) for (int I = 0; I < N; ++I) { if (Right[I] < OtherRight) foo(); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (const auto & I : Right) + // CHECK-FIXES: for (const auto & I : Right) { // CHECK-FIXES-NEXT: if (I < OtherRight) // Calling non-const member functions is not. @@ -66,21 +66,21 @@ void memberFunctionsAndOperators() { Array[I].nonConstMember(0); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Array) + // CHECK-FIXES: for (auto & I : Array) { // CHECK-FIXES-NEXT: I.nonConstMember(0); for (int I = 0; I < N; ++I) { Array[I] = OtherStr; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Array) + // CHECK-FIXES: for (auto & I : Array) { // CHECK-FIXES-NEXT: I = OtherStr; for (int I = 0; I < N; ++I) { Right[I] = OtherRight; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Right) + // CHECK-FIXES: for (auto & I : Right) { // CHECK-FIXES-NEXT: I = OtherRight; } @@ -90,14 +90,14 @@ void usedAsParameterToFunctionOrOperator() { copyArg(Array[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto I : Array) + // CHECK-FIXES: for (auto I : Array) { // CHECK-FIXES-NEXT: copyArg(I); for (int I = 0; I < N; ++I) { copyArg(Right[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Right) + // CHECK-FIXES: for (auto & I : Right) { // CHECK-FIXES-NEXT: copyArg(I); // Using as a const reference argument is allowed. @@ -105,7 +105,7 @@ void usedAsParameterToFunctionOrOperator() { constRefArg(Array[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto I : Array) + // CHECK-FIXES: for (auto I : Array) { // CHECK-FIXES-NEXT: constRefArg(I); for (int I = 0; I < N; ++I) { @@ -113,14 +113,14 @@ void usedAsParameterToFunctionOrOperator() { foo(); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto I : Array) + // CHECK-FIXES: for (auto I : Array) { // CHECK-FIXES-NEXT: if (OtherStr < I) for (int I = 0; I < N; ++I) { constRefArg(Right[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (const auto & I : Right) + // CHECK-FIXES: for (const auto & I : Right) { // CHECK-FIXES-NEXT: constRefArg(I); // Using as a non-const reference is not. @@ -128,20 +128,20 @@ void usedAsParameterToFunctionOrOperator() { nonConstRefArg(Array[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Array) + // CHECK-FIXES: for (auto & I : Array) { // CHECK-FIXES-NEXT: nonConstRefArg(I); for (int I = 0; I < N; ++I) { nonConstRefArg(Right[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Right) + // CHECK-FIXES: for (auto & I : Right) { // CHECK-FIXES-NEXT: nonConstRefArg(I); for (int I = 0; I < N; ++I) { if (OtherRight < Right[I]) foo(); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Right) + // CHECK-FIXES: for (auto & I : Right) { // CHECK-FIXES-NEXT: if (OtherRight < I) } @@ -151,19 +151,19 @@ void primitiveTypes() { copyArg(Ints[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: copyArg(Int); for (int I = 0; I < N; ++I) { constRefArg(Ints[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: constRefArg(Int); for (int I = 0; I < N; ++I) { nonConstRefArg(Ints[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int & Int : Ints) + // CHECK-FIXES: for (int & Int : Ints) { // CHECK-FIXES-NEXT: nonConstRefArg(Int); // Builtin operators. @@ -173,7 +173,7 @@ void primitiveTypes() { foo(); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: if (Int < N) for (int I = 0; I < N; ++I) { @@ -181,7 +181,7 @@ void primitiveTypes() { foo(); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: if (N == Int) // Assignment. @@ -189,21 +189,21 @@ void primitiveTypes() { Ints[I] = OtherInt; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int & Int : Ints) + // CHECK-FIXES: for (int & Int : Ints) { // CHECK-FIXES-NEXT: Int = OtherInt; for (int I = 0; I < N; ++I) { OtherInt = Ints[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: OtherInt = Int; for (int I = 0; I < N; ++I) { OtherInt = Ints[I] = OtherInt; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int & Int : Ints) + // CHECK-FIXES: for (int & Int : Ints) { // CHECK-FIXES-NEXT: OtherInt = Int = OtherInt; // Arithmetic operations. @@ -211,21 +211,21 @@ void primitiveTypes() { OtherInt += Ints[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: OtherInt += Int; for (int I = 0; I < N; ++I) { Ints[I] += Ints[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int & Int : Ints) + // CHECK-FIXES: for (int & Int : Ints) { // CHECK-FIXES-NEXT: Int += Int; for (int I = 0; I < N; ++I) { int Res = 5 * (Ints[I] + 1) - Ints[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: int Res = 5 * (Int + 1) - Int; } @@ -238,7 +238,7 @@ void takingReferences() { Str &K = Array[I]; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & I : Array) + // CHECK-FIXES: for (auto & I : Array) { // CHECK-FIXES-NEXT: Str &J = I; // CHECK-FIXES-NEXT: Str &K = I; for (int I = 0; I < N; ++I) { @@ -246,7 +246,7 @@ void takingReferences() { const Str &K = Array[I]; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto I : Array) + // CHECK-FIXES: for (auto I : Array) { // CHECK-FIXES-NEXT: const Str &J = I; // CHECK-FIXES-NEXT: const Str &K = I; @@ -256,7 +256,7 @@ void takingReferences() { int &K = Ints[I]; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int & Int : Ints) + // CHECK-FIXES: for (int & Int : Ints) { // CHECK-FIXES-NEXT: int &J = Int; // CHECK-FIXES-NEXT: int &K = Int; for (int I = 0; I < N; ++I) { @@ -264,7 +264,7 @@ void takingReferences() { const int &K = Ints[I]; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: const int &J = Int; // CHECK-FIXES-NEXT: const int &K = Int; @@ -274,27 +274,27 @@ void takingReferences() { (void)J; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto J : Array) + // CHECK-FIXES: for (auto J : Array) { for (int I = 0; I < N; ++I) { Str &J = Array[I]; (void)J; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto & J : Array) + // CHECK-FIXES: for (auto & J : Array) { for (int I = 0; I < N; ++I) { const int &J = Ints[I]; (void)J; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int J : Ints) + // CHECK-FIXES: for (int J : Ints) { for (int I = 0; I < N; ++I) { int &J = Ints[I]; (void)J; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int & J : Ints) + // CHECK-FIXES: for (int & J : Ints) { } template <class T> @@ -315,7 +315,7 @@ void testContainerOfConstIents() { OtherInt -= Ints[I]; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { vector<const Str> Strs; for (int I = 0; I < Strs.size(); ++I) { @@ -323,7 +323,7 @@ void testContainerOfConstIents() { constRefArg(Strs[I]); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop - // CHECK-FIXES: for (auto Str : Strs) + // CHECK-FIXES: for (auto Str : Strs) { } // When we are inside a const-qualified member functions, all the data members @@ -341,20 +341,20 @@ class TestInsideConstFunction { copyArg(Ints[I]); } // CHECK-MESSAGES: :[[@LINE-4]]:5: warning: use range-based for loop - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { for (int I = 0; I < N; ++I) { Array[I].constMember(0); constRefArg(Array[I]); } // CHECK-MESSAGES: :[[@LINE-4]]:5: warning: use range-based for loop - // CHECK-FIXES: for (auto I : Array) + // CHECK-FIXES: for (auto I : Array) { for (int I = 0; I < V.size(); ++I) { if (V[I]) copyArg(V[I]); } // CHECK-MESSAGES: :[[@LINE-4]]:5: warning: use range-based for loop - // CHECK-FIXES: for (int I : V) + // CHECK-FIXES: for (int I : V) { } }; diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-extra.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-extra.cpp index 1ac555f..161427c 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-extra.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/loop-convert-extra.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-loop-convert %t -- -- -I %S/Inputs/loop-convert +// RUN: %check_clang_tidy %s modernize-loop-convert %t -- -- -I %S/Inputs/loop-convert #include "structures.h" @@ -14,7 +14,7 @@ void f() { int B = Arr[I][A]; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Arr) + // CHECK-FIXES: for (auto & I : Arr) { // CHECK-FIXES-NEXT: int A = 0; // CHECK-FIXES-NEXT: int B = I[A]; @@ -51,7 +51,7 @@ void aliasing() { int Y = T.X; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & T : Arr) + // CHECK-FIXES: for (auto & T : Arr) { // CHECK-FIXES-NOT: Val &{{[a-z_]+}} = // CHECK-FIXES-NEXT: {} // CHECK-FIXES-NEXT: int Y = T.X; @@ -64,7 +64,7 @@ void aliasing() { int Z = Arr[I].X + T.X; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Arr) + // CHECK-FIXES: for (auto & I : Arr) { // CHECK-FIXES-NEXT: Val &T = I; // CHECK-FIXES-NEXT: int Y = T.X; // CHECK-FIXES-NEXT: int Z = I.X + T.X; @@ -75,7 +75,7 @@ void aliasing() { int Z = Arr[I].X + T.X; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Arr) + // CHECK-FIXES: for (auto & I : Arr) { // CHECK-FIXES-NEXT: Val T = I; // CHECK-FIXES-NEXT: int Y = T.X; // CHECK-FIXES-NEXT: int Z = I.X + T.X; @@ -88,7 +88,7 @@ void aliasing() { int Y = T.X; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & T : V) + // CHECK-FIXES: for (auto & T : V) { // CHECK-FIXES-NEXT: {} // CHECK-FIXES-NEXT: int Y = T.X; @@ -99,7 +99,7 @@ void aliasing() { int Y = T.X; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & T : *Pv) + // CHECK-FIXES: for (auto & T : *Pv) { // CHECK-FIXES-NEXT: {} // CHECK-FIXES-NEXT: int Y = T.X; @@ -108,7 +108,7 @@ void aliasing() { int Y = T.X; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Arr) + // CHECK-FIXES: for (auto & I : Arr) { // CHECK-FIXES-NEXT: Val &T = func(I); // CHECK-FIXES-NEXT: int Y = T.X; @@ -119,8 +119,8 @@ void aliasing() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Alias : IntArr) - // CHECK-FIXES-NEXT: if (Alias) + // CHECK-FIXES: for (int Alias : IntArr) { + // CHECK-FIXES-NEXT: if (Alias) { for (unsigned I = 0; I < N; ++I) { while (int Alias = IntArr[I]) { @@ -128,8 +128,8 @@ void aliasing() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Alias : IntArr) - // CHECK-FIXES-NEXT: while (Alias) + // CHECK-FIXES: for (int Alias : IntArr) { + // CHECK-FIXES-NEXT: while (Alias) { for (unsigned I = 0; I < N; ++I) { switch (int Alias = IntArr[I]) { @@ -138,8 +138,8 @@ void aliasing() { } } // CHECK-MESSAGES: :[[@LINE-6]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Alias : IntArr) - // CHECK-FIXES-NEXT: switch (Alias) + // CHECK-FIXES: for (int Alias : IntArr) { + // CHECK-FIXES-NEXT: switch (Alias) { for (unsigned I = 0; I < N; ++I) { for (int Alias = IntArr[I]; Alias < N; ++Alias) { @@ -147,8 +147,8 @@ void aliasing() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Alias : IntArr) - // CHECK-FIXES-NEXT: for (; Alias < N; ++Alias) + // CHECK-FIXES: for (int Alias : IntArr) { + // CHECK-FIXES-NEXT: for (; Alias < N; ++Alias) { for (unsigned I = 0; I < N; ++I) { for (unsigned J = 0; int Alias = IntArr[I]; ++J) { @@ -156,15 +156,15 @@ void aliasing() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Alias : IntArr) - // CHECK-FIXES-NEXT: for (unsigned J = 0; Alias; ++J) + // CHECK-FIXES: for (int Alias : IntArr) { + // CHECK-FIXES-NEXT: for (unsigned J = 0; Alias; ++J) { struct IntRef { IntRef(); IntRef(const int& i); operator int*(); }; for (int I = 0; I < N; ++I) { IntRef Int(IntArr[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : IntArr) + // CHECK-FIXES: for (int I : IntArr) { // CHECK-FIXES-NEXT: IntRef Int(I); int *PtrArr[N]; @@ -173,7 +173,7 @@ void aliasing() { printf("%d\n", *P); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto P : PtrArr) + // CHECK-FIXES: for (auto P : PtrArr) { // CHECK-FIXES-NEXT: printf("%d\n", *P); IntRef Refs[N]; @@ -182,7 +182,7 @@ void aliasing() { printf("%d\n", *P); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & Ref : Refs) + // CHECK-FIXES: for (auto & Ref : Refs) { // CHECK-FIXES-NEXT: int *P = Ref; // CHECK-FIXES-NEXT: printf("%d\n", *P); @@ -212,7 +212,7 @@ void refs_and_vals() { Alias.X = 0; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto Alias : S_const) + // CHECK-FIXES: for (auto Alias : S_const) { // CHECK-FIXES-NOT: MutableVal {{[a-z_]+}} = // CHECK-FIXES-NEXT: {} // CHECK-FIXES-NEXT: Alias.X = 0; @@ -223,7 +223,7 @@ void refs_and_vals() { Alias.X = 0; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto Alias : Ss) + // CHECK-FIXES: for (auto Alias : Ss) { // CHECK-FIXES-NOT: MutableVal {{[a-z_]+}} = // CHECK-FIXES-NEXT: {} // CHECK-FIXES-NEXT: Alias.X = 0; @@ -234,7 +234,7 @@ void refs_and_vals() { Alias.X = 0; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & Alias : Ss) + // CHECK-FIXES: for (auto & Alias : Ss) { // CHECK-FIXES-NOT: MutableVal &{{[a-z_]+}} = // CHECK-FIXES-NEXT: {} // CHECK-FIXES-NEXT: Alias.X = 0; @@ -246,7 +246,7 @@ void refs_and_vals() { unsigned Othersize = Other.size(); } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : Dep) + // CHECK-FIXES: for (int & It : Dep) { // CHECK-FIXES-NEXT: printf("%d\n", It); // CHECK-FIXES-NEXT: const int& Idx = Other[0]; // CHECK-FIXES-NEXT: unsigned Othersize = Other.size(); @@ -255,7 +255,7 @@ void refs_and_vals() { Other.at(i); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & i : Other) + // CHECK-FIXES: for (int & i : Other) { // CHECK-FIXES: i; for (int I = 0, E = Dep.size(); I != E; ++I) { @@ -273,21 +273,21 @@ struct MemberNaming { printf("%d\n", Ints[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: printf("%d\n", Int); for (int I = 0; I < N; ++I) { printf("%d\n", Ints_[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int Int : Ints_) + // CHECK-FIXES: for (int Int : Ints_) { // CHECK-FIXES-NEXT: printf("%d\n", Int); for (int I = 0; I < DInts.size(); ++I) { printf("%d\n", DInts[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (int DInt : DInts) + // CHECK-FIXES: for (int DInt : DInts) { // CHECK-FIXES-NEXT: printf("%d\n", DInt); } @@ -298,14 +298,14 @@ void MemberNaming::outOfLine() { printf("%d\n", Ints[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Int : Ints) + // CHECK-FIXES: for (int Int : Ints) { // CHECK-FIXES-NEXT: printf("%d\n", Int); for (int I = 0; I < N; ++I) { printf("%d\n", Ints_[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Int : Ints_) + // CHECK-FIXES: for (int Int : Ints_) { // CHECK-FIXES-NEXT: printf("%d\n", Int); } @@ -334,7 +334,7 @@ void sameNames() { (void)Nums[I]; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Nums) + // CHECK-FIXES: for (int & I : Nums) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2 + Num; // CHECK-FIXES-NEXT: (void)I; @@ -346,7 +346,7 @@ void sameNames() { (void)Nums[I]; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Nums) + // CHECK-FIXES: for (int & I : Nums) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", I); // CHECK-FIXES-NEXT: Sum += I + 2 + Num + Elem; // CHECK-FIXES-NEXT: (void)I; @@ -357,7 +357,7 @@ void oldIndexConflict() { printf("Num: %d\n", Nums[Num]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int Num : Nums) + // CHECK-FIXES: for (int Num : Nums) { // CHECK-FIXES-NEXT: printf("Num: %d\n", Num); S Things; @@ -365,7 +365,7 @@ void oldIndexConflict() { printf("Thing: %d %d\n", Thing->X, (*Thing).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & Thing : Things) + // CHECK-FIXES: for (auto & Thing : Things) { // CHECK-FIXES-NEXT: printf("Thing: %d %d\n", Thing.X, Thing.X); } @@ -376,7 +376,7 @@ void macroConflict() { printf("Max of 3 and 5: %d\n", MAX(3, 5)); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : MAXs) + // CHECK-FIXES: for (auto & It : MAXs) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); // CHECK-FIXES-NEXT: printf("Max of 3 and 5: %d\n", MAX(3, 5)); @@ -385,7 +385,7 @@ void macroConflict() { printf("Max of 3 and 5: %d\n", MAX(3, 5)); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto It : MAXs) + // CHECK-FIXES: for (auto It : MAXs) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); // CHECK-FIXES-NEXT: printf("Max of 3 and 5: %d\n", MAX(3, 5)); @@ -396,8 +396,8 @@ void macroConflict() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : DEFs) - // CHECK-FIXES-NEXT: if (It == DEF) + // CHECK-FIXES: for (int & It : DEFs) { + // CHECK-FIXES-NEXT: if (It == DEF) { // CHECK-FIXES-NEXT: printf("I found %d\n", It); } @@ -407,7 +407,7 @@ void keywordConflict() { *It = 5; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : ints) + // CHECK-FIXES: for (int & It : ints) { // CHECK-FIXES-NEXT: It = 5; U __FUNCTION__s; @@ -416,7 +416,7 @@ void keywordConflict() { int __FUNCTION__s_It = (*It).X + 2; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : __FUNCTION__s) + // CHECK-FIXES: for (auto & It : __FUNCTION__s) { // CHECK-FIXES-NEXT: int __FUNCTION__s_It = It.X + 2; } @@ -435,7 +435,7 @@ void typeConflict() { *It = sizeof(Val); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : Vals) + // CHECK-FIXES: for (int & It : Vals) { // CHECK-FIXES-NEXT: It = sizeof(Val); typedef struct Val TD; @@ -454,7 +454,7 @@ void typeConflict() { (void) *It; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : TDs) + // CHECK-FIXES: for (auto & It : TDs) { // CHECK-FIXES-NEXT: TD V; // CHECK-FIXES-NEXT: V.X = 5; @@ -464,7 +464,7 @@ void typeConflict() { *It = sizeof(St); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : Sts) + // CHECK-FIXES: for (int & It : Sts) { // CHECK-FIXES-NEXT: It = sizeof(St); } @@ -528,8 +528,8 @@ void f() { } // CHECK-MESSAGES: :[[@LINE-8]]:3: warning: use range-based for loop instead // CHECK-MESSAGES: :[[@LINE-8]]:5: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Arr) - // CHECK-FIXES-NEXT: for (auto & J : Arr) + // CHECK-FIXES: for (auto & I : Arr) { + // CHECK-FIXES-NEXT: for (auto & J : Arr) { // CHECK-FIXES-NEXT: int K = I.X + J.X; // CHECK-FIXES-NOT: int L = I.X + I.X; @@ -542,8 +542,8 @@ void f() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Nest) - // CHECK-FIXES-NEXT: for (int J = 0; J < M; ++J) + // CHECK-FIXES: for (auto & I : Nest) { + // CHECK-FIXES-NEXT: for (int J = 0; J < M; ++J) { // CHECK-FIXES-NEXT: printf("Got item %d", I[J].X); // Note that the order of M and N are switched for this test. @@ -554,8 +554,8 @@ void f() { } // CHECK-MESSAGES: :[[@LINE-4]]:5: warning: use range-based for loop instead // CHECK-FIXES-NOT: for (auto & {{[a-zA-Z_]+}} : Nest[I]) - // CHECK-FIXES: for (int J = 0; J < M; ++J) - // CHECK-FIXES-NEXT: for (auto & I : Nest) + // CHECK-FIXES: for (int J = 0; J < M; ++J) { + // CHECK-FIXES-NEXT: for (auto & I : Nest) { // CHECK-FIXES-NEXT: printf("Got item %d", I[J].X); // The inner loop is also convertible. @@ -566,8 +566,8 @@ void f() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : NestT) - // CHECK-FIXES-NEXT: for (T::iterator TI = I.begin(), TE = I.end(); TI != TE; ++TI) + // CHECK-FIXES: for (auto & I : NestT) { + // CHECK-FIXES-NEXT: for (T::iterator TI = I.begin(), TE = I.end(); TI != TE; ++TI) { // CHECK-FIXES-NEXT: printf("%d", *TI); // The inner loop is also convertible. @@ -578,8 +578,8 @@ void f() { } } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto I : NestS) - // CHECK-FIXES-NEXT: for (S::const_iterator SI = I.begin(), SE = I.end(); SI != SE; ++SI) + // CHECK-FIXES: for (auto I : NestS) { + // CHECK-FIXES-NEXT: for (S::const_iterator SI = I.begin(), SE = I.end(); SI != SE; ++SI) { // CHECK-FIXES-NEXT: printf("%d", *SI); for (Nested<S>::const_iterator I = NestS.begin(), E = NestS.end(); I != E; ++I) { @@ -590,7 +590,7 @@ void f() { } } // CHECK-MESSAGES: :[[@LINE-7]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto Ss : NestS) + // CHECK-FIXES: for (auto Ss : NestS) { for (Nested<S>::iterator I = NestS.begin(), E = NestS.end(); I != E; ++I) { S &Ss = *I; @@ -600,7 +600,7 @@ void f() { } } // CHECK-MESSAGES: :[[@LINE-7]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & Ss : NestS) + // CHECK-FIXES: for (auto & Ss : NestS) { Foo foo; for (Nested<S>::const_iterator I = NestS.begin(), E = NestS.end(); I != E; ++I) { @@ -611,7 +611,7 @@ void f() { } } // CHECK-MESSAGES: :[[@LINE-7]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto Ss : NestS) + // CHECK-FIXES: for (auto Ss : NestS) { for (Nested<S>::iterator I = NestS.begin(), E = NestS.end(); I != E; ++I) { S &Ss = *I; @@ -621,7 +621,7 @@ void f() { } } // CHECK-MESSAGES: :[[@LINE-7]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & Ss : NestS) + // CHECK-FIXES: for (auto & Ss : NestS) { } @@ -638,7 +638,7 @@ void complexContainer() { MutableVal J = *I; } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & I : Exes[Index].getS()) + // CHECK-FIXES: for (auto & I : Exes[Index].getS()) { // CHECK-FIXES-NEXT: MutableVal K = I; // CHECK-FIXES-NEXT: MutableVal J = I; } @@ -650,7 +650,7 @@ void f() { printf("I found %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : Tt) + // CHECK-FIXES: for (int & It : Tt) { // CHECK-FIXES-NEXT: printf("I found %d\n", It); T *Pt; @@ -658,7 +658,7 @@ void f() { printf("I found %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : *Pt) + // CHECK-FIXES: for (int & It : *Pt) { // CHECK-FIXES-NEXT: printf("I found %d\n", It); S Ss; @@ -666,7 +666,7 @@ void f() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); S *Ps; @@ -674,35 +674,35 @@ void f() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & P : *Ps) + // CHECK-FIXES: for (auto & P : *Ps) { // CHECK-FIXES-NEXT: printf("s has value %d\n", P.X); for (S::iterator It = Ss.begin(); It != Ss.end(); ++It) { printf("s has value %d\n", It->X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); for (S::iterator It = Ss.begin(); It != Ss.end(); ++It) { It->X = 3; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: It.X = 3; for (S::iterator It = Ss.begin(); It != Ss.end(); ++It) { (*It).X = 3; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: It.X = 3; for (S::iterator It = Ss.begin(); It != Ss.end(); ++It) { It->nonConstFun(4, 5); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Ss) + // CHECK-FIXES: for (auto & It : Ss) { // CHECK-FIXES-NEXT: It.nonConstFun(4, 5); U Uu; @@ -710,14 +710,14 @@ void f() { printf("s has value %d\n", It->X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Uu) + // CHECK-FIXES: for (auto & It : Uu) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); for (U::iterator It = Uu.begin(); It != Uu.end(); ++It) { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : Uu) + // CHECK-FIXES: for (auto & It : Uu) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); U::iterator A; @@ -733,7 +733,7 @@ void f() { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : V) + // CHECK-FIXES: for (int & It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); for (dependent<int>::iterator It(V.begin()); @@ -741,7 +741,7 @@ void f() { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & It : V) + // CHECK-FIXES: for (int & It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); doublyDependent<int, int> intmap; @@ -750,7 +750,7 @@ void f() { printf("intmap[%d] = %d", It->first, It->second); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto & It : intmap) + // CHECK-FIXES: for (auto & It : intmap) { // CHECK-FIXES-NEXT: printf("intmap[%d] = %d", It.first, It.second); } @@ -765,7 +765,7 @@ void different_type() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto It : Ss) + // CHECK-FIXES: for (auto It : Ss) { // CHECK-FIXES-NEXT: printf("s has value %d\n", It.X); S *Ps; @@ -773,7 +773,7 @@ void different_type() { printf("s has value %d\n", (*It).X); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (auto P : *Ps) + // CHECK-FIXES: for (auto P : *Ps) { // CHECK-FIXES-NEXT: printf("s has value %d\n", P.X); dependent<int> V; @@ -781,14 +781,14 @@ void different_type() { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int It : V) + // CHECK-FIXES: for (int It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); for (dependent<int>::const_iterator It(V.begin()); It != V.end(); ++It) { printf("Fibonacci number is %d\n", *It); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int It : V) + // CHECK-FIXES: for (int It : V) { // CHECK-FIXES-NEXT: printf("Fibonacci number is %d\n", It); } @@ -808,7 +808,7 @@ void messing_with_macros() { printf("Value: %d\n", Arr[I]); } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: printf("Value: %d\n", I); for (int I = 0; I < N; ++I) { @@ -821,7 +821,7 @@ void messing_with_macros() { THREE_PARAM(Arr[I], Arr[I], Arr[I]); } // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & I : Arr) + // CHECK-FIXES: for (int & I : Arr) { // CHECK-FIXES-NEXT: TWO_PARAM(I, I); // CHECK-FIXES-NEXT: THREE_PARAM(I, I, I); } @@ -907,10 +907,11 @@ void capturesIndex() { F(Arr[I]); } // CHECK-MESSAGES: :[[@LINE-6]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) - // CHECK-FIXES-NEXT: auto F = [Arr, &I](int k) - // CHECK-FIXES-NEXT: printf("%d\n", I + k); - // CHECK-FIXES: F(I); + // CHECK-FIXES: for (int I : Arr) { + // CHECK-FIXES-NEXT: auto F = [Arr, &I](int k) { + // CHECK-FIXES-NEXT: printf("%d\n", I + k); + // CHECK-FIXES-NEXT: }; + // CHECK-FIXES-NEXT: F(I); } void implicitCapture() { @@ -939,8 +940,8 @@ void implicitCapture() { }; } // CHECK-MESSAGES: :[[@LINE-6]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) - // CHECK-FIXES-NEXT: auto G3 = [&]() + // CHECK-FIXES: for (int I : Arr) { + // CHECK-FIXES-NEXT: auto G3 = [&]() { // CHECK-FIXES-NEXT: int R3 = I; // CHECK-FIXES-NEXT: int J3 = I + R3; @@ -950,8 +951,8 @@ void implicitCapture() { }; } // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) - // CHECK-FIXES-NEXT: auto G4 = [=]() + // CHECK-FIXES: for (int I : Arr) { + // CHECK-FIXES-NEXT: auto G4 = [=]() { // CHECK-FIXES-NEXT: int R4 = I + 5; // Alias by value. @@ -962,8 +963,8 @@ void implicitCapture() { }; } // CHECK-MESSAGES: :[[@LINE-6]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int R5 : Arr) - // CHECK-FIXES-NEXT: auto G5 = [&]() + // CHECK-FIXES: for (int R5 : Arr) { + // CHECK-FIXES-NEXT: auto G5 = [&]() { // CHECK-FIXES-NEXT: int J5 = 8 + R5; // Alias by reference. @@ -974,8 +975,8 @@ void implicitCapture() { }; } // CHECK-MESSAGES: :[[@LINE-6]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int & R6 : Arr) - // CHECK-FIXES-NEXT: auto G6 = [&]() + // CHECK-FIXES: for (int & R6 : Arr) { + // CHECK-FIXES-NEXT: auto G6 = [&]() { // CHECK-FIXES-NEXT: int J6 = -1 + R6; } @@ -1029,14 +1030,14 @@ void captureByValue() { auto C1 = [&Arr, I]() { if (Arr[I] == 1); }; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Arr) + // CHECK-FIXES: for (int I : Arr) { // CHECK-FIXES-NEXT: auto C1 = [&Arr, &I]() { if (I == 1); }; for (unsigned I = 0; I < Dep.size(); ++I) { auto C2 = [&Dep, I]() { if (Dep[I] == 2); }; } // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Dep) + // CHECK-FIXES: for (int I : Dep) { // CHECK-FIXES-NEXT: auto C2 = [&Dep, &I]() { if (I == 2); }; } @@ -1062,7 +1063,7 @@ void f() { E Ee{ { { g( { Array[I] } ) } } }; } // CHECK-MESSAGES: :[[@LINE-7]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for (int I : Array) + // CHECK-FIXES: for (int I : Array) { // CHECK-FIXES-NEXT: int A{ I }; // CHECK-FIXES-NEXT: int B{ g(I) }; // CHECK-FIXES-NEXT: int C{ g( { I } ) }; @@ -1079,7 +1080,7 @@ void bug28341() { if (value > 127) ; // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead - // CHECK-FIXES: for(unsigned char value : v) + // CHECK-FIXES: for(unsigned char value : v) { // CHECK-FIXES-NEXT: if (value > 127) } } diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared.cpp index 65ece77..686b998 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-shared.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-make-shared %t -- -- -I %S/Inputs/smart-ptr +// RUN: %check_clang_tidy %s modernize-make-shared %t -- -- -I %S/Inputs/smart-ptr #include "shared_ptr.h" // CHECK-FIXES: #include <memory> @@ -226,7 +226,7 @@ void initialization(int T, Base b) { // CHECK-FIXES: std::shared_ptr<APair> PAggr = std::make_shared<APair>(APair{T, 1}); PAggr.reset(new APair{T, 1}); // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: use std::make_shared instead - // CHECK-FIXES: std::make_shared<APair>(APair{T, 1}); + // CHECK-FIXES: PAggr = std::make_shared<APair>(APair{T, 1}); // Test different kinds of initialization of the pointee, when the shared_ptr // is initialized with braces. diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique.cpp index 13103c7..bcdf4fb 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/make-unique.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes -std=c++14-or-later %s modernize-make-unique %t -- -- -I %S/Inputs/smart-ptr +// RUN: %check_clang_tidy -std=c++14-or-later %s modernize-make-unique %t -- -- -I %S/Inputs/smart-ptr #include "unique_ptr.h" #include "initializer_list.h" @@ -271,7 +271,7 @@ void initialization(int T, Base b) { // CHECK-FIXES: std::unique_ptr<APair> PAggr = std::make_unique<APair>(APair{T, 1}); PAggr.reset(new APair{T, 1}); // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: use std::make_unique instead - // CHECK-FIXES: std::make_unique<APair>(APair{T, 1}); + // CHECK-FIXES: PAggr = std::make_unique<APair>(APair{T, 1}); // Check aggregate init with intermediate temporaries. std::unique_ptr<APair> PAggrTemp = std::unique_ptr<APair>(new APair({T, 1})); @@ -480,7 +480,7 @@ void initialization(int T, Base b) { std::unique_ptr<int[]> FI; FI.reset(new int[5]()); // value initialization. // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: - // CHECK-FIXES: FI = std::make_unique<int[]>(5); + // CHECK-FIXES: FI = std::make_unique<int[]>(5); // value initialization. // The check doesn't give warnings and fixes for cases where the original new // expression does default initialization. diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/min-max-use-initializer-list.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/min-max-use-initializer-list.cpp index ae270dc..9dc05b9 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/min-max-use-initializer-list.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/min-max-use-initializer-list.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-min-max-use-initializer-list %t +// RUN: %check_clang_tidy %s modernize-min-max-use-initializer-list %t // CHECK-FIXES: #include <algorithm> namespace utils { @@ -206,7 +206,7 @@ int min7 = std::min(1, std::min(2, 3, fless_than), fgreater_than); // CHECK-FIXES: int min7 = std::min(1, std::min(2, 3, fless_than), fgreater_than); int max8 = std::max(1, std::max(2, 3, fless_than), less_than); -// CHECK-FIXES: int max8 = std::max(1, std::max(2, 3, fless_than), less_than) +// CHECK-FIXES: int max8 = std::max(1, std::max(2, 3, fless_than), less_than); int min8 = std::min(1, std::min(2, 3, fless_than), less_than); // CHECK-FIXES: int min8 = std::min(1, std::min(2, 3, fless_than), less_than); diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/pass-by-value.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/pass-by-value.cpp index 7538862..cc237f4 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/pass-by-value.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/pass-by-value.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-pass-by-value %t -- -- -fno-delayed-template-parsing +// RUN: %check_clang_tidy %s modernize-pass-by-value %t -- -- -fno-delayed-template-parsing namespace { // POD types are trivially move constructible. @@ -92,7 +92,7 @@ struct H { using namespace ns_H; H::H(const HMovable &M) : M(M) {} // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: pass by value and use std::move -// CHECK-FIXES: H(HMovable M) : M(std::move(M)) {} +// CHECK-FIXES: H::H(HMovable M) : M(std::move(M)) {} // Try messing up with macros. #define MOVABLE_PARAM(Name) const Movable & Name diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.cpp index 935163b..6311497 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/redundant-void-arg.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-redundant-void-arg %t +// RUN: %check_clang_tidy %s modernize-redundant-void-arg %t #define NULL 0 @@ -452,22 +452,22 @@ struct DefinitionWithNoBody { #define BODY {} #define LAMBDA1 [](void){} // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: redundant void argument list in lambda expression [modernize-redundant-void-arg] -// CHECK-FIXES: LAMBDA1 [](){} +// CHECK-FIXES: #define LAMBDA1 [](){} #define LAMBDA2 [](void)BODY // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: redundant void argument list in lambda expression [modernize-redundant-void-arg] -// CHECK-FIXES: LAMBDA2 []()BODY +// CHECK-FIXES: #define LAMBDA2 []()BODY #define LAMBDA3(captures, args, body) captures args body #define WRAP(...) __VA_ARGS__ #define LAMBDA4 (void)LAMBDA3([],(void),BODY) // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: redundant void argument list in lambda expression [modernize-redundant-void-arg] -// CHECK-FIXES: LAMBDA4 (void)LAMBDA3([],(),BODY) +// CHECK-FIXES: #define LAMBDA4 (void)LAMBDA3([],(),BODY) #define LAMBDA5 []() -> void (*)(void) {return BODY;} // CHECK-MESSAGES: :[[@LINE-1]]:34: warning: redundant void argument list in lambda expression [modernize-redundant-void-arg] -// CHECK-FIXES: LAMBDA5 []() -> void (*)() {return BODY;} +// CHECK-FIXES: #define LAMBDA5 []() -> void (*)() {return BODY;} void lambda_expression_with_macro_test(){ (void)LAMBDA1; (void)LAMBDA2; diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp index dea0857..2281c1a 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/replace-auto-ptr.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-replace-auto-ptr %t -- -- -I %S/Inputs/replace-auto-ptr +// RUN: %check_clang_tidy %s modernize-replace-auto-ptr %t -- -- -I %S/Inputs/replace-auto-ptr // CHECK-FIXES: #include <utility> @@ -15,7 +15,7 @@ std::auto_ptr<Derived> create_derived_ptr(); // Test function return values (declaration) std::auto_ptr<char> f_5(); // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: auto_ptr is deprecated -// CHECK-FIXES: std::unique_ptr<char> f_5() +// CHECK-FIXES: std::unique_ptr<char> f_5(); // Test function parameters. diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast-remove-stars.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast-remove-stars.cpp index 5b620ad..59d6d23a 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast-remove-stars.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast-remove-stars.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-use-auto %t -- \ +// RUN: %check_clang_tidy %s modernize-use-auto %t -- \ // RUN: -config="{CheckOptions: {modernize-use-auto.RemoveStars: 'true' , modernize-use-auto.MinTypeNameLength: '0'}}" \ // RUN: -- -frtti @@ -108,7 +108,7 @@ typedef unsigned char xmlChar; do { \ xmlChar *s = (xmlChar *)(x); \ } while (false); -// CHECK-FIXES: xmlChar *s = (xmlChar *)(x); +// CHECK-FIXES: xmlChar *s = (xmlChar *)(x); {{\\}} void f_cstyle_cast() { auto *a = new A(); diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast.cpp index 3946b97..7f687ab 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-cast.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-use-auto %t -- \ +// RUN: %check_clang_tidy %s modernize-use-auto %t -- \ // RUN: -config="{CheckOptions: {modernize-use-auto.MinTypeNameLength: '0'}}" \ // RUN: -- -I %S/Inputs/use-auto -frtti @@ -108,7 +108,7 @@ typedef unsigned char xmlChar; do { \ xmlChar *s = (xmlChar *)(x); \ } while (false); -// CHECK-FIXES: xmlChar *s = (xmlChar *)(x); +// CHECK-FIXES: xmlChar *s = (xmlChar *)(x); {{\\}} void f_cstyle_cast() { auto *a = new A(); diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-for-pointer.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-for-pointer.cpp index 1fd4189..2cb0208 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-for-pointer.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-for-pointer.cpp @@ -1,20 +1,20 @@ -// RUN: %check_clang_tidy --match-partial-fixes -check-suffix=REMOVE %s modernize-use-auto %t -- \ +// RUN: %check_clang_tidy -check-suffix=REMOVE %s modernize-use-auto %t -- \ // RUN: -config="{CheckOptions: {modernize-use-auto.RemoveStars: 'true', modernize-use-auto.MinTypeNameLength: '0'}}" -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-use-auto %t -- \ +// RUN: %check_clang_tidy %s modernize-use-auto %t -- \ // RUN: -config="{CheckOptions: {modernize-use-auto.RemoveStars: 'false', modernize-use-auto.MinTypeNameLength: '0'}}" void pointerToFunction() { void (*(*(f1)))() = static_cast<void (**)()>(nullptr); // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use auto when initializing - // CHECK-FIXES-REMOVE: auto f1 = - // CHECK-FIXES: auto *f1 = + // CHECK-FIXES-REMOVE: auto f1 = static_cast<void (**)()>(nullptr); + // CHECK-FIXES: auto *f1 = static_cast<void (**)()>(nullptr); } void pointerToArray() { int(*a1)[2] = new int[10][2]; // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use auto when initializing - // CHECK-FIXES-REMOVE: auto a1 = - // CHECK-FIXES: auto *a1 = + // CHECK-FIXES-REMOVE: auto a1 = new int[10][2]; + // CHECK-FIXES: auto *a1 = new int[10][2]; } void memberFunctionPointer() { @@ -23,7 +23,7 @@ void memberFunctionPointer() { }; void(A::* a1)() = static_cast<void(A::*)()>(nullptr); // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use auto when initializing - // CHECK-FIXES-REMOVE: auto a1 = - // CHECK-FIXES: auto *a1 = + // CHECK-FIXES-REMOVE: auto a1 = static_cast<void(A::*)()>(nullptr); + // CHECK-FIXES: auto *a1 = static_cast<void(A::*)()>(nullptr); } diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-iterator.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-iterator.cpp index 02fb646..a928b33 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-iterator.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-iterator.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes -std=c++11,c++14 %s modernize-use-auto %t -- -- -I %S/Inputs/use-auto +// RUN: %check_clang_tidy -std=c++11,c++14 %s modernize-use-auto %t -- -- -I %S/Inputs/use-auto // FIXME: Fix the checker to work in C++17 mode. #include "containers.h" @@ -277,18 +277,18 @@ void pointer_to_iterator() { void loop() { for (std::vector<int>::iterator I = Vec.begin(); I != Vec.end(); ++I) { // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: use auto when declaring iterators - // CHECK-FIXES: for (auto I = Vec.begin(); I != Vec.end(); ++I) + // CHECK-FIXES: for (auto I = Vec.begin(); I != Vec.end(); ++I) { } for (int_iterator I = Vec.begin(), E = Vec.end(); I != E; ++I) { // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: use auto when declaring iterators - // CHECK-FIXES: for (auto I = Vec.begin(), E = Vec.end(); I != E; ++I) + // CHECK-FIXES: for (auto I = Vec.begin(), E = Vec.end(); I != E; ++I) { } std::vector<std::vector<int>::iterator> IterVec; for (std::vector<int>::iterator I : IterVec) { // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: use auto when declaring iterators - // CHECK-FIXES: for (auto I : IterVec) + // CHECK-FIXES: for (auto I : IterVec) { } } diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-min-type-name-length.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-min-type-name-length.cpp index 6cea26e..e954cee 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-min-type-name-length.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-auto-min-type-name-length.cpp @@ -1,7 +1,7 @@ -// RUN: %check_clang_tidy --match-partial-fixes -check-suffix=0-0 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: false, modernize-use-auto.MinTypeNameLength: 0}}" -- -frtti -// RUN: %check_clang_tidy --match-partial-fixes -check-suffix=0-8 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: false, modernize-use-auto.MinTypeNameLength: 8}}" -- -frtti -// RUN: %check_clang_tidy --match-partial-fixes -check-suffix=1-0 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: true, modernize-use-auto.MinTypeNameLength: 0}}" -- -frtti -// RUN: %check_clang_tidy --match-partial-fixes -check-suffix=1-8 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: true, modernize-use-auto.MinTypeNameLength: 8}}" -- -frtti +// RUN: %check_clang_tidy -check-suffix=0-0 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: false, modernize-use-auto.MinTypeNameLength: 0}}" -- -frtti +// RUN: %check_clang_tidy -check-suffix=0-8 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: false, modernize-use-auto.MinTypeNameLength: 8}}" -- -frtti +// RUN: %check_clang_tidy -check-suffix=1-0 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: true, modernize-use-auto.MinTypeNameLength: 0}}" -- -frtti +// RUN: %check_clang_tidy -check-suffix=1-8 %s modernize-use-auto %t -- -config="{CheckOptions: {modernize-use-auto.RemoveStars: true, modernize-use-auto.MinTypeNameLength: 8}}" -- -frtti template <class T> extern T foo(); template <class T> struct P { explicit P(T t) : t_(t) {} T t_;}; @@ -17,10 +17,10 @@ int bar() { // CHECK-FIXES-1-0: auto i = {{.*}} // CHECK-FIXES-1-8: long i = {{.*}} const long ci = static_cast<long>(foo<const long>()); - // CHECK-FIXES-0-0: auto ci = {{.*}} - // CHECK-FIXES-0-8: long ci = {{.*}} - // CHECK-FIXES-1-0: auto ci = {{.*}} - // CHECK-FIXES-1-8: long ci = {{.*}} + // CHECK-FIXES-0-0: const auto ci = {{.*}} + // CHECK-FIXES-0-8: const long ci = {{.*}} + // CHECK-FIXES-1-0: const auto ci = {{.*}} + // CHECK-FIXES-1-8: const long ci = {{.*}} long *pi = static_cast<long *>(foo<long *>()); // CHECK-FIXES-0-0: auto *pi = {{.*}} // CHECK-FIXES-0-8: long *pi = {{.*}} diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default-copy.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default-copy.cpp index 9639e0e..3afa4a4 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default-copy.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default-copy.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-use-equals-default %t -- \ +// RUN: %check_clang_tidy %s modernize-use-equals-default %t -- \ // RUN: -config="{CheckOptions: {modernize-use-equals-default.IgnoreMacros: false}}" \ // RUN: -- -fno-delayed-template-parsing -fexceptions -Wno-error=return-type @@ -35,7 +35,7 @@ struct IL { // Skip unions. union NU { NU(const NU &Other) : Field(Other.Field) {} - // CHECK-FIXES: NU(const NU &Other) : + // CHECK-FIXES: NU(const NU &Other) : Field(Other.Field) {} NU &operator=(const NU &Other) { Field = Other.Field; return *this; @@ -47,7 +47,7 @@ union NU { // Skip structs/classes containing anonymous unions. struct SU { SU(const SU &Other) : Field(Other.Field) {} - // CHECK-FIXES: SU(const SU &Other) : + // CHECK-FIXES: SU(const SU &Other) : Field(Other.Field) {} SU &operator=(const SU &Other) { Field = Other.Field; return *this; diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default.cpp index a606b84..2eefdf9 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-use-equals-default %t -- -- -fno-delayed-template-parsing -fexceptions +// RUN: %check_clang_tidy %s modernize-use-equals-default %t -- -- -fno-delayed-template-parsing -fexceptions // Out of line definition. class OL { @@ -145,7 +145,7 @@ struct ST { // CHECK-FIXES: ST() = default; ~ST() {} // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default' - // CHECK-FIXES: ST() = default; + // CHECK-FIXES: ~ST() = default; }; // Deleted constructor/destructor. diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison-qt.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison-qt.cpp index 135ee27..1f26ff3 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison-qt.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison-qt.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes -std=c++17 %s modernize-use-integer-sign-comparison %t -- \ +// RUN: %check_clang_tidy -std=c++17 %s modernize-use-integer-sign-comparison %t -- \ // RUN: -config="{CheckOptions: {modernize-use-integer-sign-comparison.EnableQtSupport: true}}" // CHECK-FIXES: #include <QtCore/q20utility.h> @@ -92,7 +92,8 @@ int AllComparisons() { if (static_cast<unsigned int>(uArray[2]) < static_cast<int>(sArray[2])) return 0; // CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison] -// CHECK-FIXES: if (q20::cmp_less(uArray[2],sArray[2])) +// CHECK-FIXES: if (q20::cmp_less(uArray[2],sArray[2]))) +// FIXME: There should only be 2 closing braces. The fix-it inserts an unbalanced one. if ((unsigned int)uArray[3] < (int)sArray[3]) return 0; diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison.cpp index e0a84ef..628cee0 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-integer-sign-comparison.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes -std=c++20 %s modernize-use-integer-sign-comparison %t +// RUN: %check_clang_tidy -std=c++20-or-later %s modernize-use-integer-sign-comparison %t // CHECK-FIXES: #include <utility> @@ -91,7 +91,8 @@ int AllComparisons() { if (static_cast<unsigned int>(uArray[2]) < static_cast<int>(sArray[2])) return 0; // CHECK-MESSAGES: :[[@LINE-2]]:9: warning: comparison between 'signed' and 'unsigned' integers [modernize-use-integer-sign-comparison] -// CHECK-FIXES: if (std::cmp_less(uArray[2],sArray[2])) +// CHECK-FIXES: if (std::cmp_less(uArray[2],sArray[2]))) +// FIXME: There should only be 2 closing braces. The fix-it inserts an unbalanced one. if ((unsigned int)uArray[3] < (int)sArray[3]) return 0; diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr.cpp index fe9d6de..27a9629 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-nullptr.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-use-nullptr %t -- \ +// RUN: %check_clang_tidy %s modernize-use-nullptr %t -- \ // RUN: -config="{CheckOptions: {modernize-use-nullptr.NullMacros: 'MY_NULL,NULL'}}" #define NULL 0 @@ -91,7 +91,7 @@ template <typename T> struct pear { // it is often defined as __null and the check will catch it.) void f() { x = __null; } // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: use nullptr [modernize-use-nullptr] - // CHECK-FIXES: x = nullptr; + // CHECK-FIXES: void f() { x = nullptr; } // But if you say 0, we allow the possibility that T can be used with integral // and pointer types, and "0" is an acceptable initializer (even if "{}" might @@ -118,11 +118,13 @@ void test_macro_args() { // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: use nullptr // CHECK-FIXES: IS_EQ(static_cast<int*>(nullptr), Ptr); - IS_EQ(0, Ptr); // literal + // literal + IS_EQ(0, Ptr); // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: use nullptr // CHECK-FIXES: IS_EQ(nullptr, Ptr); - IS_EQ(NULL, Ptr); // macro + // macro + IS_EQ(NULL, Ptr); // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: use nullptr // CHECK-FIXES: IS_EQ(nullptr, Ptr); @@ -205,7 +207,7 @@ void test_macro_args() { } a[2] = {ENTRY(0), {0}}; // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: use nullptr // CHECK-MESSAGES: :[[@LINE-2]]:24: warning: use nullptr - // CHECK-FIXES: a[2] = {ENTRY(nullptr), {nullptr}}; + // CHECK-FIXES: } a[2] = {ENTRY(nullptr), {nullptr}}; #undef ENTRY #define assert1(expr) (expr) ? 0 : 1 diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-override.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-override.cpp index 809e435..8e19fdd 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-override.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-override.cpp @@ -1,4 +1,4 @@ -// RUN: %check_clang_tidy --match-partial-fixes %s modernize-use-override,cppcoreguidelines-explicit-virtual-functions %t -- -- -fexceptions +// RUN: %check_clang_tidy %s modernize-use-override,cppcoreguidelines-explicit-virtual-functions %t -- -- -fexceptions #define ABSTRACT = 0 @@ -96,7 +96,8 @@ public: // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using // CHECK-FIXES: void j() const override; - virtual MustUseResultObject k(); // Has an implicit attribute. + // Has an implicit attribute. + virtual MustUseResultObject k(); // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: prefer using // CHECK-FIXES: MustUseResultObject k() override; @@ -203,7 +204,8 @@ public: // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: prefer using // CHECK-FIXES: void j() const override - virtual MustUseResultObject k(); // Has an implicit attribute. + // Has an implicit attribute. + virtual MustUseResultObject k(); // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: prefer using // CHECK-FIXES: MustUseResultObject k() override; diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-format.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-format.cpp index ea97d5b..6a6cb98 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-format.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-format.cpp @@ -1,11 +1,11 @@ -// RUN: %check_clang_tidy --match-partial-fixes \ -// RUN: -std=c++20 %s modernize-use-std-format %t -- \ +// RUN: %check_clang_tidy \ +// RUN: -std=c++20-or-later %s modernize-use-std-format %t -- \ // RUN: -config="{CheckOptions: {modernize-use-std-format.StrictMode: true}}" \ // RUN: -- -isystem %clang_tidy_headers \ // RUN: -DPRI_CMDLINE_MACRO="\"s\"" \ // RUN: -D__PRI_CMDLINE_MACRO="\"s\"" -// RUN: %check_clang_tidy --match-partial-fixes \ -// RUN: -std=c++20 %s modernize-use-std-format %t -- \ +// RUN: %check_clang_tidy \ +// RUN: -std=c++20-or-later %s modernize-use-std-format %t -- \ // RUN: -config="{CheckOptions: {modernize-use-std-format.StrictMode: false}}" \ // RUN: -- -isystem %clang_tidy_headers \ // RUN: -DPRI_CMDLINE_MACRO="\"s\"" \ @@ -70,32 +70,32 @@ std::string StrFormat_strict_conversion() { std::string StrFormat_field_width_and_precision() { auto s1 = absl::StrFormat("width only:%*d width and precision:%*.*f precision only:%.*f", 3, 42, 4, 2, 3.14159265358979323846, 5, 2.718); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("width only:{:{}} width and precision:{:{}.{}f} precision only:{:.{}f}", 42, 3, 3.14159265358979323846, 4, 2, 2.718, 5); + // CHECK-FIXES: auto s1 = std::format("width only:{:{}} width and precision:{:{}.{}f} precision only:{:.{}f}", 42, 3, 3.14159265358979323846, 4, 2, 2.718, 5); auto s2 = absl::StrFormat("width and precision positional:%1$*2$.*3$f after", 3.14159265358979323846, 4, 2); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("width and precision positional:{0:{1}.{2}f} after", 3.14159265358979323846, 4, 2); + // CHECK-FIXES: auto s2 = std::format("width and precision positional:{0:{1}.{2}f} after", 3.14159265358979323846, 4, 2); const int width = 10, precision = 3; const unsigned int ui1 = 42, ui2 = 43, ui3 = 44; auto s3 = absl::StrFormat("casts width only:%*d width and precision:%*.*d precision only:%.*d\n", 3, ui1, 4, 2, ui2, 5, ui3); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES-NOTSTRICT: std::format("casts width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", ui1, 3, ui2, 4, 2, ui3, 5); - // CHECK-FIXES-STRICT: std::format("casts width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", static_cast<int>(ui1), 3, static_cast<int>(ui2), 4, 2, static_cast<int>(ui3), 5); + // CHECK-FIXES-NOTSTRICT: auto s3 = std::format("casts width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", ui1, 3, ui2, 4, 2, ui3, 5); + // CHECK-FIXES-STRICT: auto s3 = std::format("casts width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", static_cast<int>(ui1), 3, static_cast<int>(ui2), 4, 2, static_cast<int>(ui3), 5); auto s4 = absl::StrFormat("c_str removal width only:%*s width and precision:%*.*s precision only:%.*s", 3, s1.c_str(), 4, 2, s2.c_str(), 5, s3.c_str()); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("c_str removal width only:{:>{}} width and precision:{:>{}.{}} precision only:{:.{}}", s1, 3, s2, 4, 2, s3, 5); + // CHECK-FIXES: auto s4 = std::format("c_str removal width only:{:>{}} width and precision:{:>{}.{}} precision only:{:.{}}", s1, 3, s2, 4, 2, s3, 5); const std::string *ps1 = &s1, *ps2 = &s2, *ps3 = &s3; auto s5 = absl::StrFormat("c_str() removal pointer width only:%-*s width and precision:%-*.*s precision only:%-.*s", 3, ps1->c_str(), 4, 2, ps2->c_str(), 5, ps3->c_str()); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("c_str() removal pointer width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", *ps1, 3, *ps2, 4, 2, *ps3, 5); + // CHECK-FIXES: auto s5 = std::format("c_str() removal pointer width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", *ps1, 3, *ps2, 4, 2, *ps3, 5); iterator<std::string> is1, is2, is3; auto s6 = absl::StrFormat("c_str() removal iterator width only:%-*s width and precision:%-*.*s precision only:%-.*s", 3, is1->c_str(), 4, 2, is2->c_str(), 5, is3->c_str()); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("c_str() removal iterator width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", *is1, 3, *is2, 4, 2, *is3, 5); + // CHECK-FIXES: auto s6 = std::format("c_str() removal iterator width only:{:{}} width and precision:{:{}.{}} precision only:{:.{}}", *is1, 3, *is2, 4, 2, *is3, 5); return s1 + s2 + s3 + s4 + s5 + s6; } @@ -105,7 +105,7 @@ void StrFormat_macros() { #define FORMAT absl::StrFormat auto s1 = FORMAT("Hello %d", 42); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("Hello {}", 42); + // CHECK-FIXES: auto s1 = std::format("Hello {}", 42); // Arguments that are macros aren't replaced with their value, even if they are rearranged. #define VALUE 3.14159265358979323846 @@ -113,7 +113,7 @@ void StrFormat_macros() { #define PRECISION 4 auto s3 = absl::StrFormat("Hello %*.*f", WIDTH, PRECISION, VALUE); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("Hello {:{}.{}f}", VALUE, WIDTH, PRECISION); + // CHECK-FIXES: auto s3 = std::format("Hello {:{}.{}f}", VALUE, WIDTH, PRECISION); const uint64_t u64 = 42; const uint32_t u32 = 32; @@ -121,11 +121,11 @@ void StrFormat_macros() { auto s4 = absl::StrFormat("Replaceable macro at end %" PRIu64, u64); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("Replaceable macro at end {}", u64); + // CHECK-FIXES: auto s4 = std::format("Replaceable macro at end {}", u64); auto s5 = absl::StrFormat("Replaceable macros in middle %" PRIu64 " %" PRIu32 "\n", u64, u32); // CHECK-MESSAGES: [[@LINE-1]]:13: warning: use 'std::format' instead of 'StrFormat' [modernize-use-std-format] - // CHECK-FIXES: std::format("Replaceable macros in middle {} {}\n", u64, u32); + // CHECK-FIXES: auto s5 = std::format("Replaceable macros in middle {} {}\n", u64, u32); // These need PRI and __PRI prefixes so that the check get as far as looking for // where the macro comes from. diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print.cpp index 9bf60e7..ec37f07 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-std-print.cpp @@ -1,11 +1,11 @@ -// RUN: %check_clang_tidy --match-partial-fixes -check-suffixes=,STRICT \ -// RUN: -std=c++23 %s modernize-use-std-print %t -- \ +// RUN: %check_clang_tidy -check-suffixes=,STRICT \ +// RUN: -std=c++23-or-later %s modernize-use-std-print %t -- \ // RUN: -config="{CheckOptions: {modernize-use-std-print.StrictMode: true}}" \ // RUN: -- -isystem %clang_tidy_headers -fexceptions \ // RUN: -DPRI_CMDLINE_MACRO="\"s\"" \ // RUN: -D__PRI_CMDLINE_MACRO="\"s\"" -// RUN: %check_clang_tidy --match-partial-fixes -check-suffixes=,NOTSTRICT \ -// RUN: -std=c++23 %s modernize-use-std-print %t -- \ +// RUN: %check_clang_tidy -check-suffixes=,NOTSTRICT \ +// RUN: -std=c++23-or-later %s modernize-use-std-print %t -- \ // RUN: -config="{CheckOptions: {modernize-use-std-print.StrictMode: false}}" \ // RUN: -- -isystem %clang_tidy_headers -fexceptions \ // RUN: -DPRI_CMDLINE_MACRO="\"s\"" \ @@ -113,7 +113,7 @@ int printf_uses_return_value(int choice) { for (printf("for init statement %d\n", i);;) // CHECK-MESSAGES: [[@LINE-1]]:8: warning: use 'std::println' instead of 'printf' [modernize-use-std-print] - // CHECK-FIXES: std::println("for init statement {}", i); + // CHECK-FIXES: for (std::println("for init statement {}", i);;) ;; for (int j = printf("for init statement %d\n", i);;) @@ -124,7 +124,7 @@ int printf_uses_return_value(int choice) { for (;; printf("for expression %d\n", i)) // CHECK-MESSAGES: [[@LINE-1]]:11: warning: use 'std::println' instead of 'printf' [modernize-use-std-print] - // CHECK-FIXES: std::println("for expression {}", i) + // CHECK-FIXES: for (;; std::println("for expression {}", i)) ;; for (auto C : "foo") @@ -228,7 +228,7 @@ int fprintf_uses_return_value(int choice) { for (fprintf(stderr, "for init statement %d\n", i);;) // CHECK-MESSAGES: [[@LINE-1]]:8: warning: use 'std::println' instead of 'fprintf' [modernize-use-std-print] - // CHECK-FIXES: std::println(stderr, "for init statement {}", i); + // CHECK-FIXES: for (std::println(stderr, "for init statement {}", i);;) ;; for (int j = fprintf(stderr, "for init statement %d\n", i);;) @@ -239,7 +239,7 @@ int fprintf_uses_return_value(int choice) { for (;; fprintf(stderr, "for expression %d\n", i)) // CHECK-MESSAGES: [[@LINE-1]]:11: warning: use 'std::println' instead of 'fprintf' [modernize-use-std-print] - // CHECK-FIXES: std::println(stderr, "for expression {}", i) + // CHECK-FIXES: for (;; std::println(stderr, "for expression {}", i)) ;; for (auto C : "foo") |