[PATCH] D140775: [clangd] Hover: show CalleeArgInfo for literals

Nathan Ridge via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat Dec 31 01:08:32 PST 2022


nridge added inline comments.


================
Comment at: clang-tools-extra/clangd/Hover.cpp:779
 
-HoverInfo getStringLiteralContents(const StringLiteral *SL,
-                                   const PrintingPolicy &PP) {
-  HoverInfo HI;
-
+void addStringLiteralContents(const StringLiteral *SL, const PrintingPolicy &PP,
+                              HoverInfo &HI) {
----------------
nit: "contents" seems a bit strange now that this is no longer necessarily the entirety of the hover contents (nor is it the string literal's contents)

maybe name it `addStringLiteralInfo`?


================
Comment at: clang-tools-extra/clangd/Hover.cpp:826
+    if (const StringLiteral *SL = dyn_cast<StringLiteral>(E)) {
+      addStringLiteralContents(SL, PP, HI);
+      return HI;
----------------
nit: for consistency with non-literal expressions, maybe the CalleeArgInfo should come //after// the other contents of the hover?


================
Comment at: clang-tools-extra/clangd/Hover.cpp:830
+    if (HI.CalleeArgInfo) {
+      HI.Name = "literal";
+      return HI;
----------------
tom-anders wrote:
> `HoverInfo::present` has an assertion that the `Name` has to be non-empty. I'm open for other name suggestions here (Or we could of course adjust `HoverInfo::present` instead)
It at least seems no worse than `"expression"` for other expressions.

I think the expression's value would be more useful (and despite the "not much value" comment above, I think there //can// be value in showing this if e.g. the expression is written as hex and the hover shows you the decimal value), but that can be left for a later change.


================
Comment at: clang-tools-extra/clangd/Hover.cpp:843
   // evaluatable.
   if (auto Val = printExprValue(E, AST.getASTContext())) {
     HI.Type = printType(E->getType(), AST.getASTContext(), PP);
----------------
Any reason not to also add CalleeArgInfo in this branch?

I know this branch is not for literals so I'm suggesting to expand the scope of the patch, feel free to leave this for later, but conceptually I don't see why the CalleeArgInfo would be any less useful for non-literal expressions that take this branch.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D140775



More information about the cfe-commits mailing list