[PATCH] D82701: [clangd][Hover] Dont crash on null types
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat Jun 27 02:13:20 PDT 2020
kadircet created this revision.
kadircet added reviewers: hokein, sammccall.
Herald added subscribers: cfe-commits, usaxena95, arphaman, jkorous, MaskRay, ilya-biryukov.
Herald added a project: clang.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D82701
Files:
clang-tools-extra/clangd/Hover.cpp
clang-tools-extra/clangd/unittests/HoverTests.cpp
Index: clang-tools-extra/clangd/unittests/HoverTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/HoverTests.cpp
+++ clang-tools-extra/clangd/unittests/HoverTests.cpp
@@ -708,6 +708,24 @@
HI.Definition = "X x";
HI.Type = "struct X";
}},
+ {// Don't crash on null types.
+ R"cpp(
+ #define M(l, r) l = r
+ int bar();
+ void foo() {
+ M(auto [^[[x]]], bar()); /*error-ok*/
+ }
+ )cpp",
+ [](HoverInfo &HI) {
+ HI.Name = "x";
+ HI.Kind = index::SymbolKind::Variable;
+ HI.NamespaceScope = "";
+ HI.LocalScope = "foo::";
+ HI.Definition = "";
+ HI.Type = "NULL TYPE";
+ // Bindings are in theory public members of an anonymous struct.
+ HI.AccessSpecifier = "public";
+ }},
};
for (const auto &Case : Cases) {
SCOPED_TRACE(Case.Code);
Index: clang-tools-extra/clangd/Hover.cpp
===================================================================
--- clang-tools-extra/clangd/Hover.cpp
+++ clang-tools-extra/clangd/Hover.cpp
@@ -124,8 +124,8 @@
// TypePrinter doesn't resolve decltypes, so resolve them here.
// FIXME: This doesn't handle composite types that contain a decltype in them.
// We should rather have a printing policy for that.
- while (const auto *DT = QT->getAs<DecltypeType>())
- QT = DT->getUnderlyingType();
+ while (!QT.isNull() && QT->isDecltypeType())
+ QT = QT->getAs<DecltypeType>()->getUnderlyingType();
return QT.getAsString(Policy);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82701.273893.patch
Type: text/x-patch
Size: 1626 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200627/7f8df23e/attachment.bin>
More information about the cfe-commits
mailing list