[clang-tools-extra] [clang-tidy][clangd] Fixed removeFunctionArgs don't remove comma for use-ranges check (PR #118568)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 25 06:32:23 PST 2024
================
@@ -173,22 +200,27 @@ static void removeFunctionArgs(DiagnosticBuilder &Diag, const CallExpr &Call,
for (unsigned Index : Sorted) {
const Expr *Arg = Call.getArg(Index);
if (Commas[Index]) {
- if (Index >= Commas.size()) {
- Diag << FixItHint::CreateRemoval(Arg->getSourceRange());
- } else {
+ if (Index + 1 < Call.getNumArgs()) {
// Remove the next comma
- Commas[Index + 1] = true;
- Diag << FixItHint::CreateRemoval(CharSourceRange::getTokenRange(
- {Arg->getBeginLoc(),
- Lexer::getLocForEndOfToken(
- Arg->getEndLoc(), 0, Ctx.getSourceManager(), Ctx.getLangOpts())
- .getLocWithOffset(1)}));
+ const Expr *NextArg = Call.getArg(Index + 1);
+ auto CommaLoc = GetCommaLoc(Arg->getEndLoc().getLocWithOffset(1),
+ NextArg->getBeginLoc());
+ if (CommaLoc) {
+ Commas[Index + 1] = true;
+ Diag << FixItHint::CreateRemoval(*CommaLoc);
+ }
}
} else {
- Diag << FixItHint::CreateRemoval(CharSourceRange::getTokenRange(
- Arg->getBeginLoc().getLocWithOffset(-1), Arg->getEndLoc()));
- Commas[Index] = true;
+ // At this point we know Index > 0 because `Commas[0] = true` earlier
+ const Expr *PrevArg = Call.getArg(Index - 1);
+ auto CommaLoc = GetCommaLoc(PrevArg->getEndLoc().getLocWithOffset(1),
----------------
EugeneZelenko wrote:
Ditto.
https://github.com/llvm/llvm-project/pull/118568
More information about the cfe-commits
mailing list