kadircet updated this revision to Diff 508934.
kadircet added a comment.
Herald added a project: clang-tools-extra.
- Add test
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146634/new/
https://reviews.llvm.org/D146634
Files:
clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
clang/lib/Index/USRGeneration.cpp
Index: clang/lib/Index/USRGeneration.cpp
===================================================================
--- clang/lib/Index/USRGeneration.cpp
+++ clang/lib/Index/USRGeneration.cpp
@@ -262,6 +262,12 @@
// Mangle in type information for the arguments.
for (auto *PD : D->parameters()) {
+ // FIXME: Make sure we don't have nullptrs in parameter lists of function
+ // decls.
+ if (!PD) {
+ IgnoreResults = true;
+ return;
+ }
Out << '#';
VisitType(PD->getType());
}
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -4002,6 +4002,19 @@
EXPECT_EQ(Second.activeParameter, 1);
}
+TEST(CompletionTest, NoCrashTests) {
+ llvm::StringLiteral Cases[] = {
+ R"cpp(
+ template <typename = int> struct Foo {};
+ auto a = [x(3)](Foo<^>){};
+ )cpp",
+ };
+ for (auto Case : Cases) {
+ SCOPED_TRACE(Case);
+ auto Completions = completions(Case);
+ }
+}
+
} // namespace
} // namespace clangd
} // namespace clang
Index: clang/lib/Index/USRGeneration.cpp
===================================================================
--- clang/lib/Index/USRGeneration.cpp
+++ clang/lib/Index/USRGeneration.cpp
@@ -262,6 +262,12 @@
// Mangle in type information for the arguments.
for (auto *PD : D->parameters()) {
+ // FIXME: Make sure we don't have nullptrs in parameter lists of function
+ // decls.
+ if (!PD) {
+ IgnoreResults = true;
+ return;
+ }
Out << '#';
VisitType(PD->getType());
}
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -4002,6 +4002,19 @@
EXPECT_EQ(Second.activeParameter, 1);
}
+TEST(CompletionTest, NoCrashTests) {
+ llvm::StringLiteral Cases[] = {
+ R"cpp(
+ template <typename = int> struct Foo {};
+ auto a = [x(3)](Foo<^>){};
+ )cpp",
+ };
+ for (auto Case : Cases) {
+ SCOPED_TRACE(Case);
+ auto Completions = completions(Case);
+ }
+}
+
} // namespace
} // namespace clangd
} // namespace clang
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits