summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp')
-rw-r--r--clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
index f359702b3f5..01a6ca74898 100644
--- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
@@ -522,13 +522,11 @@ void LoopConvertCheck::doConversion(
const ValueDecl *MaybeContainer, const UsageResult &Usages,
const DeclStmt *AliasDecl, bool AliasUseRequired, bool AliasFromForInit,
const ForStmt *Loop, RangeDescriptor Descriptor) {
- auto Diag = diag(Loop->getForLoc(), "use range-based for loop instead");
-
std::string VarName;
bool VarNameFromAlias = (Usages.size() == 1) && AliasDecl;
bool AliasVarIsRef = false;
bool CanCopy = true;
-
+ std::vector<FixItHint> FixIts;
if (VarNameFromAlias) {
const auto *AliasVar = cast<VarDecl>(AliasDecl->getSingleDecl());
VarName = AliasVar->getName().str();
@@ -560,8 +558,8 @@ void LoopConvertCheck::doConversion(
getAliasRange(Context->getSourceManager(), ReplaceRange);
}
- Diag << FixItHint::CreateReplacement(
- CharSourceRange::getTokenRange(ReplaceRange), ReplacementText);
+ FixIts.push_back(FixItHint::CreateReplacement(
+ CharSourceRange::getTokenRange(ReplaceRange), ReplacementText));
// No further replacements are made to the loop, since the iterator or index
// was used exactly once - in the initialization of AliasVar.
} else {
@@ -606,8 +604,8 @@ void LoopConvertCheck::doConversion(
Usage.Kind == Usage::UK_CaptureByCopy ? "&" + VarName : VarName;
}
TUInfo->getReplacedVars().insert(std::make_pair(Loop, IndexVar));
- Diag << FixItHint::CreateReplacement(
- CharSourceRange::getTokenRange(Range), ReplaceText);
+ FixIts.push_back(FixItHint::CreateReplacement(
+ CharSourceRange::getTokenRange(Range), ReplaceText));
}
}
@@ -645,8 +643,9 @@ void LoopConvertCheck::doConversion(
std::string Range = ("(" + TypeString + " " + VarName + " : " +
MaybeDereference + Descriptor.ContainerString + ")")
.str();
- Diag << FixItHint::CreateReplacement(
- CharSourceRange::getTokenRange(ParenRange), Range);
+ FixIts.push_back(FixItHint::CreateReplacement(
+ CharSourceRange::getTokenRange(ParenRange), Range));
+ diag(Loop->getForLoc(), "use range-based for loop instead") << FixIts;
TUInfo->getGeneratedDecls().insert(make_pair(Loop, VarName));
}
OpenPOWER on IntegriCloud