[PATCH] D54553: [clangd] Fix crash hovering on non-decltype trailing return
Marc-Andre Laperle via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 14 15:51:30 PST 2018
malaperle created this revision.
Herald added subscribers: cfe-commits, kadircet, arphaman, jkorous, MaskRay, ioeric, ilya-biryukov.
More specifically, hovering on "auto" in
auto main() -> int {
return 0;
}
Signed-off-by: Marc-Andre Laperle <malaperle at gmail.com>
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D54553
Files:
clangd/XRefs.cpp
unittests/clangd/XRefsTests.cpp
Index: unittests/clangd/XRefsTests.cpp
===================================================================
--- unittests/clangd/XRefsTests.cpp
+++ unittests/clangd/XRefsTests.cpp
@@ -1006,6 +1006,14 @@
)cpp",
"int",
},
+ {
+ R"cpp(// More compilcated structured types.
+ ^auto main() -> int {
+ return 0;
+ }
+ )cpp",
+ "int",
+ },
};
for (const OneTest &Test : Tests) {
Index: clangd/XRefs.cpp
===================================================================
--- clangd/XRefs.cpp
+++ clangd/XRefs.cpp
@@ -605,6 +605,7 @@
// Handle auto return types:
//- auto foo() {}
//- auto& foo() {}
+ //- auto foo() -> int {}
//- auto foo() -> decltype(1+1) {}
//- operator auto() const { return 10; }
bool VisitFunctionDecl(FunctionDecl *D) {
@@ -624,12 +625,13 @@
const AutoType *AT = D->getReturnType()->getContainedAutoType();
if (AT && !AT->getDeducedType().isNull()) {
DeducedType = AT->getDeducedType();
- } else {
+ } else if (const DecltypeType *DT = dyn_cast<DecltypeType>(D->getReturnType())) {
// auto in a trailing return type just points to a DecltypeType and
// getContainedAutoType does not unwrap it.
- const DecltypeType *DT = dyn_cast<DecltypeType>(D->getReturnType());
if (!DT->getUnderlyingType().isNull())
DeducedType = DT->getUnderlyingType();
+ } else if (!D->getReturnType().isNull()) {
+ DeducedType = D->getReturnType();
}
return true;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D54553.174116.patch
Type: text/x-patch
Size: 1564 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181114/fd05d518/attachment.bin>
More information about the cfe-commits
mailing list