[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