sammccall added inline comments.

================
Comment at: clang-tools-extra/clangd/AST.cpp:353
     if (auto *AT = D->getType()->getContainedAutoType()) {
-      if (!AT->getDeducedType().isNull())
-        DeducedType = AT->getDeducedType();
+      DeducedType = AT->desugar();
     }
----------------
I added a comment to getDeducedType() - I think the intent here is that we 
return the AutoType itself if it's not deduced, right?


================
Comment at: clang-tools-extra/clangd/Hover.cpp:591
+                                                   ASTContext &ASTCtx,
+                                                   const SymbolIndex *Index) {
+  QualType OriginThisType = CTE->getType()->getPointeeType();
----------------
I dropped this unused param


================
Comment at: clang-tools-extra/clangd/Hover.cpp:618
+  } else {
+    CXXRecordDecl *D = QT->getAsCXXRecordDecl();
+    if (D && D->isLambda())
----------------
sammccall wrote:
> qchateau wrote:
> > sammccall wrote:
> > > You've rewritten this logic compared to the old 
> > > `getHoverContents(QualType)`, and I think there are regressions:
> > >  - We've dropped class documentation (see e.g. 
> > > ac3f9e48421712168884d59cbfe8b294dd76a19b, this is visible in the tests)
> > >  - we're no longer using printName() to print tag-decls, which I expect 
> > > changes e.g. the printing of anyonymous structs which is special-cased in 
> > > that function (we have tests for this but probably not in combination 
> > > with auto)
> > >  - we're no longer using the printing-policy to print non-tag types, 
> > > which will lead to some random changes
> > > 
> > > I don't see a reason for these changes, can we revert them?
> > - I can re-add class documentation, but should it work when `auto` is a 
> > pointer or a ref ? In that case, I'll need something like your `unwrapType` 
> > of https://reviews.llvm.org/D93314
> > - `printName` will print `C` instead of `class C` even if I hack around and 
> > give it the right `PrintingPolicy`. The problem is that IDE (at least 
> > VSCode) does not know what `C` is and cannot color it, which looks a nice 
> > less nice. Up to you !
> > - I can re-add the printing policy for non-tag types, and add it for 
> > tag-types if we chose not to use `printName`.
> > should it work when auto is a pointer or a ref?
> 
> I think no need for now, I just want to avoid the regression.
> (Nice to have, but at least in the codebases I work in, `auto` is much more 
> common than `decltype(auto)` so it's rarely a reference, and pointers are 
> idiomatically written `auto*`)
> 
> > printName will print C instead of class C even if I hack around and give it 
> > the right PrintingPolicy.
> 
> Yeah... it's not supposed to, though the extra clarity is valuable here. You 
> could just hack around this and prepend the TagTypeKind yourself :-)
Hmm, it looks like this wasn't done. It's now printing e.g. `class vector<class 
Foo>` which seems more confusing than either `class vector<Foo>` or 
`vector<Foo>` (even if we lose some highlighting). I'll send a followup with 
proposed changes here.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D93227

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

Reply via email to