[PATCH] D111318: [clang][clangd] Improve signature help for variadic functions.

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 5 08:31:50 PDT 2021


sammccall added a comment.

Thanks, this looks nice!

Since the code is in Sema, we'd should (also) test this in `clang/test/CodeCompletion/` if possible.



================
Comment at: clang-tools-extra/clangd/CodeComplete.cpp:928
+        // FIXME: Add support for per-signature activeParameter field.
+        //
+        // This only matters for variadic functions/templates, where CurrentArg
----------------
I'd consider pulling out the logic into a helper named something like `paramIndexForArg(int, OverloadCandidate)` 

just because this function is ridiculously long and this piece of logic encapsulates nicely


================
Comment at: clang-tools-extra/clangd/CodeComplete.cpp:929
+        //
+        // This only matters for variadic functions/templates, where CurrentArg
+        // might be higher than the number of parameters. When that happens, we
----------------
hmm, now that I think about it, should this conversion from arg-index to param-index be happening here, or done already by sema and the param index passed to ProcessOverloadCandidates?

(The docs say "current arg" but I'm struggling to see how that can really be useful)


================
Comment at: clang-tools-extra/clangd/CodeComplete.cpp:945
+        }
+        SigHelp.activeParameter =
+            std::min(SigHelp.activeParameter, NumParams - 1);
----------------
hmm, if foo() is a non-variadic 0-arg function, we set activeParameter to -1.
Before this patch it's zero which is still weird, but less weird.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D111318/new/

https://reviews.llvm.org/D111318



More information about the cfe-commits mailing list