Index: clang-tidy/modernize/LoopConvertUtils.cpp =================================================================== --- clang-tidy/modernize/LoopConvertUtils.cpp +++ clang-tidy/modernize/LoopConvertUtils.cpp @@ -363,7 +363,7 @@ return isDereferenceOfOpCall(OpCall, IndexVar); if (OpCall->getOperator() == OO_Subscript) { assert(OpCall->getNumArgs() == 2); - return true; + return isIndexInSubscriptExpr(OpCall->getArg(1), IndexVar); } break; } Index: test/clang-tidy/modernize-loop-convert-extra.cpp =================================================================== --- test/clang-tidy/modernize-loop-convert-extra.cpp +++ test/clang-tidy/modernize-loop-convert-extra.cpp @@ -202,6 +202,16 @@ // CHECK-FIXES-NOT: MutableVal &{{[a-z_]+}} = // CHECK-FIXES: {} // CHECK-FIXES-NEXT: alias.x = 0; + + dependent dep, other; + for (dependent::iterator it = dep.begin(), e = dep.end(); it != e; ++it) { + printf("%d\n", *it); + const int& idx = other[0]; + } + // CHECK-MESSAGES: :[[@LINE-4]]:3: warning: use range-based for loop instead + // CHECK-FIXES: for (auto & elem : dep) + // CHECK-FIXES-NEXT: printf("%d\n", elem); + // CHECK-FIXES-NEXT: const int& idx = other[0]; } } // namespace NamingAlias