Author: angelgarcia Date: Fri Nov 6 08:04:12 2015 New Revision: 252303 URL: http://llvm.org/viewvc/llvm-project?rev=252303&view=rev Log: Avoid naming conflicts with the old index in modernize-loop-convert.
Summary: The old index declaration is going to be removed anyway, so we can reuse its name if it is the best candidate for the new index. Reviewers: klimek Subscribers: cfe-commits, alexfh Differential Revision: http://reviews.llvm.org/D14437 Modified: clang-tools-extra/trunk/clang-tidy/modernize/LoopConvertUtils.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-loop-convert-extra.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/LoopConvertUtils.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/LoopConvertUtils.cpp?rev=252303&r1=252302&r2=252303&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/LoopConvertUtils.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/LoopConvertUtils.cpp Fri Nov 6 08:04:12 2015 @@ -820,14 +820,14 @@ std::string VariableNamer::createIndexNa if (Len > 1 && ContainerName.endswith(Style == NS_UpperCase ? "S" : "s")) { IteratorName = ContainerName.substr(0, Len - 1); // E.g.: (auto thing : things) - if (!declarationExists(IteratorName)) + if (!declarationExists(IteratorName) || IteratorName == OldIndex->getName()) return IteratorName; } if (Len > 2 && ContainerName.endswith(Style == NS_UpperCase ? "S_" : "s_")) { IteratorName = ContainerName.substr(0, Len - 2); // E.g.: (auto thing : things_) - if (!declarationExists(IteratorName)) + if (!declarationExists(IteratorName) || IteratorName == OldIndex->getName()) return IteratorName; } @@ -849,12 +849,12 @@ std::string VariableNamer::createIndexNa IteratorName = AppendWithStyle(ContainerName, OldIndex->getName()); // E.g.: (auto container_i : container) - if (!declarationExists(IteratorName)) + if (!declarationExists(IteratorName) || IteratorName == OldIndex->getName()) return IteratorName; IteratorName = AppendWithStyle(ContainerName, Elem); // E.g.: (auto container_elem : container) - if (!declarationExists(IteratorName)) + if (!declarationExists(IteratorName) || IteratorName == OldIndex->getName()) return IteratorName; // Someone defeated my naming scheme... @@ -875,7 +875,8 @@ std::string VariableNamer::createIndexNa int Attempt = 0; do { IteratorName = GiveMeName + std::to_string(Attempt++); - } while (declarationExists(IteratorName)); + } while (declarationExists(IteratorName) || + IteratorName == OldIndex->getName()); return IteratorName; } Modified: clang-tools-extra/trunk/test/clang-tidy/modernize-loop-convert-extra.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-loop-convert-extra.cpp?rev=252303&r1=252302&r2=252303&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-loop-convert-extra.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-loop-convert-extra.cpp Fri Nov 6 08:04:12 2015 @@ -325,6 +325,23 @@ void sameNames() { // CHECK-FIXES-NEXT: (void)NumsI; } +void oldIndexConflict() { + for (int Num = 0; Num < N; ++Num) { + 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-NEXT: printf("Num: %d\n", Num); + + S Things; + for (S::iterator Thing = Things.begin(), End = Things.end(); Thing != End; ++Thing) { + 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-NEXT: printf("Thing: %d %d\n", Thing.X, Thing.X); +} + void macroConflict() { S MAXs; for (S::iterator It = MAXs.begin(), E = MAXs.end(); It != E; ++It) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits