diff options
author | Angel Garcia Gomez <angelgarcia@google.com> | 2015-08-26 14:51:11 +0000 |
---|---|---|
committer | Angel Garcia Gomez <angelgarcia@google.com> | 2015-08-26 14:51:11 +0000 |
commit | 446fe8d62ceb6eec9e385dc80f607316e2456e7f (patch) | |
tree | e2072dce7be5ad680ef5619b648021a3f1dbd66e | |
parent | 9f4709b26115b89dd9e5b87f46347de396b655dd (diff) | |
download | bcm5719-llvm-446fe8d62ceb6eec9e385dc80f607316e2456e7f.tar.gz bcm5719-llvm-446fe8d62ceb6eec9e385dc80f607316e2456e7f.zip |
LoopConvert no longer take as alias references to other containers.
Summary: Fix a bug where modernize-loop-convert check would take as alias a reference to other containers. Add the pertinent test.
Reviewers: alexfh
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D12361
llvm-svn: 246034
-rw-r--r-- | clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp | 2 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp index ac8210f54c9..0058ea6ba60 100644 --- a/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp +++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertUtils.cpp @@ -363,7 +363,7 @@ static bool isAliasDecl(const Decl *TheDecl, const VarDecl *IndexVar) { return isDereferenceOfOpCall(OpCall, IndexVar); if (OpCall->getOperator() == OO_Subscript) { assert(OpCall->getNumArgs() == 2); - return true; + return isIndexInSubscriptExpr(OpCall->getArg(1), IndexVar); } break; } diff --git a/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp b/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp index 6bcb931e8cf..85711b6e560 100644 --- a/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp +++ b/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp @@ -202,6 +202,16 @@ void refs_and_vals() { // CHECK-FIXES-NOT: MutableVal &{{[a-z_]+}} = // CHECK-FIXES: {} // CHECK-FIXES-NEXT: alias.x = 0; + + dependent<int> dep, other; + for (dependent<int>::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 |