summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
diff options
context:
space:
mode:
authorManuel Klimek <klimek@google.com>2015-09-23 18:40:47 +0000
committerManuel Klimek <klimek@google.com>2015-09-23 18:40:47 +0000
commit143b6442381dc7a667fc17c75dfc1d8c6c52fdfe (patch)
tree2bc2b406b8d307f2954fd3beab6b311bb28e3d8a /clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
parente1440256520aba388015a15f5c273afa799271d5 (diff)
downloadbcm5719-llvm-143b6442381dc7a667fc17c75dfc1d8c6c52fdfe.tar.gz
bcm5719-llvm-143b6442381dc7a667fc17c75dfc1d8c6c52fdfe.zip
Fix loop-convert for const references to containers.
Previously we would use a non-const loop variable in the range-based loop for: void f(const std::vector<int> &v) { for (size_t i = 0; i < v.size(); ++i) { Now we use const auto&. Note that we'll also want to use a copy at least for simple types. llvm-svn: 248418
Diffstat (limited to 'clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
index 2c623727119..054e5ce94d9 100644
--- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
@@ -391,6 +391,12 @@ static bool containerIsConst(const Expr *ContainerExpr, bool Dereference) {
return false;
CType = CType->getPointeeType();
}
+ // If VDec is a reference to a container, Dereference is false,
+ // but we still need to check the const-ness of the underlying container
+ // type.
+ if (const auto &RT = CType->getAs<ReferenceType>()) {
+ CType = RT->getPointeeType();
+ }
return CType.isConstQualified();
}
return false;
OpenPOWER on IntegriCloud