hokein accepted this revision. hokein added a comment. looks good! didn't know this API before.
================ Comment at: clangd/XRefs.cpp:592 - auto DeclT = UnwrapReferenceOrPointer(D->getType()); - const AutoType *AT = dyn_cast<AutoType>(DeclT.getTypePtr()); - if (AT && !AT->getDeducedType().isNull()) { - // For auto, use the underlying type because the const& would be - // represented twice: written in the code and in the hover. - // Example: "const auto I = 1", we only want "int" when hovering on auto, - // not "const int". - // - // For decltype(auto), take the type as is because it cannot be written - // with qualifiers or references but its decuded type can be const-ref. - DeducedType = AT->isDecltypeAuto() ? DeclT : DeclT.getUnqualifiedType(); - } + auto AT = D->getType()->getContainedAutoType(); + if (AT && !AT->getDeducedType().isNull()) ---------------- Maybe just ``` if (auto* DT = D->getType()->getContainedDeducedType()) DeducedType = *DT; ``` ? ================ Comment at: clangd/XRefs.cpp:620 + DeducedType = AT->getDeducedType(); } else { // auto in a trailing return type just points to a DecltypeType. + const DecltypeType *DT = dyn_cast<DecltypeType>(D->getReturnType()); ---------------- also expand this comment mentioning that `decltype` is not handled by the `getContainedAutoType` or `getContainedDeducedType`? Repository: rCTE Clang Tools Extra https://reviews.llvm.org/D53347 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits