sammccall added a comment.

The code looks pretty good and this makes a lot of logical sense.

However, there's an ugly practical issue: it's overwhelmingly common for 
template parameters to have cryptic and useless names.
It seems like turning `vector<int>` into `vector</*Tp: */int>` actually makes 
things worse.

And this gets yet worse: because this is type `parameter` and controlled by 
that config option, so people can't disable this without disabling the (very 
practically useful) function param hints.

Have you been using this for a while? Do you find it to be a practical help? 
Spammy?



================
Comment at: clang-tools-extra/clangd/InlayHints.cpp:378
 
+  bool VisitTemplateSpecializationTypeLoc(TemplateSpecializationTypeLoc L) {
+    auto TP = L.getTypePtr()
----------------
we need a bailout `if (!Cfg.InlayHints.Parameters)`


================
Comment at: clang-tools-extra/clangd/InlayHints.cpp:434
+        break;
+      if (auto Name = TP[I]->getName(); shouldHintName(TA[I], Name))
+        addInlayHint(TA[I].getSourceRange(), HintSide::Left,
----------------
we're missing some mangling of the name to remove the leading `_`
(stripLeadingUnderscore?)


================
Comment at: clang-tools-extra/clangd/InlayHints.cpp:553
+    llvm::raw_string_ostream Out(ArgContent);
+    TA.getArgument().print(AST.getPrintingPolicy(), Out, false);
+    if (ArgContent == ParamName)
----------------
I think we should avoid running the printer on every arg. Instead probably 
switch over the types of templatearguments, and delegate to 
shouldHintName(Expr, handle TagType/Typedef/other common nodes specifically, as 
done in shouldHintName).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D138425

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to