[clang-tools-extra] [clang-tidy] Fix when std::ranges::fix is offered on a pointer type in `modernize-use-ranges` (PR #226739)
Baranov Victor via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 27 10:14:26 PDT 2026
================
@@ -268,13 +270,15 @@ void UseRangesCheck::check(const MatchFinder::MatchResult &Result) {
for (const auto &[First, Second, Replace] : Sig) {
auto ArgNode = ArgName + std::to_string(First);
if (const auto *ArgExpr = Result.Nodes.getNodeAs<Expr>(ArgNode)) {
- Diag << FixItHint::CreateReplacement(
- Call->getArg(Replace == Indexes::Second ? Second : First)
- ->getSourceRange(),
- Lexer::getSourceText(
- CharSourceRange::getTokenRange(ArgExpr->getSourceRange()),
- Result.Context->getSourceManager(),
- Result.Context->getLangOpts()));
+ const Expr *RangeArg =
+ Call->getArg(Replace == Indexes::Second ? Second : First);
+ std::string ReplaceText =
+ tooling::fixit::getText(*ArgExpr, *Result.Context).str();
+ if (ArgExpr->getType()->isPointerType() &&
+ isa<CXXMemberCallExpr>(RangeArg->IgnoreParenImpCasts()))
+ ReplaceText = fixit::formatDereference(*ArgExpr, *Result.Context);
----------------
vbvictor wrote:
Use `if/else` or ternary. Otherwise we sometimes calculate getText only to discard it later.
https://github.com/llvm/llvm-project/pull/226739
More information about the cfe-commits
mailing list