From 2f43085b469c739ecd0a98c720aba254ceda018c Mon Sep 17 00:00:00 2001 From: Edwin Vane Date: Mon, 4 Mar 2013 16:35:04 +0000 Subject: Properly identify 'this' as range-based for container The Loop-Convert transform was mistransforming loops using 'this' implicitly. Fixed and added tests. Fixes PR15411. llvm-svn: 176436 --- clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp') diff --git a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp index ed3bfc71bec..1a700706f75 100644 --- a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp +++ b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp @@ -871,9 +871,15 @@ StringRef LoopFixer::checkDeferralsAndRejections(ASTContext *Context, return ""; } - StringRef ContainerString = - getStringFromRange(Context->getSourceManager(), Context->getLangOpts(), - ContainerExpr->getSourceRange()); + StringRef ContainerString; + if (isa(ContainerExpr->IgnoreParenImpCasts())) { + ContainerString = "this"; + } else { + ContainerString = getStringFromRange(Context->getSourceManager(), + Context->getLangOpts(), + ContainerExpr->getSourceRange()); + } + // In case someone is using an evil macro, reject this change. if (ContainerString.empty()) ++*RejectedChanges; -- cgit v1.2.3