[PATCH] D131696: [clangd] Fix an inlay-hint crash on a broken designator.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 12 05:37:00 PDT 2022
hokein updated this revision to Diff 452155.
hokein added a comment.
update the comment.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D131696/new/
https://reviews.llvm.org/D131696
Files:
clang-tools-extra/clangd/InlayHints.cpp
clang-tools-extra/clangd/unittests/InlayHintTests.cpp
Index: clang-tools-extra/clangd/unittests/InlayHintTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/InlayHintTests.cpp
+++ clang-tools-extra/clangd/unittests/InlayHintTests.cpp
@@ -1417,6 +1417,17 @@
)cpp" /*no designator hints expected (but param hints!)*/);
}
+TEST(DesignatorHints, NoCrash) {
+ assertDesignatorHints(R"cpp(
+ /*error-ok*/
+ struct A {};
+ struct Foo {int a; int b;};
+ void test() {
+ Foo f{A(), $b[[1]]};
+ }
+ )cpp", ExpectedHint{".b=", "b"});
+}
+
TEST(InlayHints, RestrictRange) {
Annotations Code(R"cpp(
auto a = false;
Index: clang-tools-extra/clangd/InlayHints.cpp
===================================================================
--- clang-tools-extra/clangd/InlayHints.cpp
+++ clang-tools-extra/clangd/InlayHints.cpp
@@ -141,8 +141,10 @@
Fields.next(); // Always advance to the next subobject name.
Prefix.resize(Size); // Erase any designator we appended.
});
- if (llvm::isa<ImplicitValueInitExpr>(Init))
- continue; // a "hole" for a subobject that was not explicitly initialized
+ // Skip for a broken initializer or if it is a "hole" in a subobject that
+ // was not explicitly initialized.
+ if (!Init || llvm::isa<ImplicitValueInitExpr>(Init))
+ continue;
const auto *BraceElidedSubobject = llvm::dyn_cast<InitListExpr>(Init);
if (BraceElidedSubobject &&
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131696.452155.patch
Type: text/x-patch
Size: 1457 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220812/907b3d9f/attachment.bin>
More information about the cfe-commits
mailing list