[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-11 Thread Nathan Ridge via cfe-commits

https://github.com/HighCommander4 closed 
https://github.com/llvm/llvm-project/pull/88236
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-11 Thread Nathan Ridge via cfe-commits


@@ -89,7 +89,9 @@ const CodeCompleteOptions::CodeCompletionRankingModel
 
 namespace {
 
-CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) {
+CompletionItemKind
+toCompletionItemKind(index::SymbolKind Kind,
+ const llvm::StringRef *Signature = nullptr) {

HighCommander4 wrote:

Done, thanks

https://github.com/llvm/llvm-project/pull/88236
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-11 Thread Nathan Ridge via cfe-commits

https://github.com/HighCommander4 updated 
https://github.com/llvm/llvm-project/pull/88236

>From 390fd263242071bcae72e65346da2a315abfbf82 Mon Sep 17 00:00:00 2001
From: Nathan Ridge 
Date: Wed, 10 Apr 2024 02:47:23 -0400
Subject: [PATCH] [clangd] Avoid using CompletionItemKind.Text for macro
 completions from the index

This was fixed in https://github.com/clangd/clangd/issues/1484 for Sema
completions but the fix did not apply to index completions.

Fixes https://github.com/clangd/clangd/issues/2002
---
 clang-tools-extra/clangd/CodeComplete.cpp| 16 +---
 .../clangd/unittests/CodeCompleteTests.cpp   |  7 +--
 clang-tools-extra/clangd/unittests/TestIndex.cpp |  7 ++-
 clang-tools-extra/clangd/unittests/TestIndex.h   |  4 +++-
 4 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/clang-tools-extra/clangd/CodeComplete.cpp 
b/clang-tools-extra/clangd/CodeComplete.cpp
index 0e5f08cec440ce..c7f96221d6bc74 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -89,7 +89,11 @@ const CodeCompleteOptions::CodeCompletionRankingModel
 
 namespace {
 
-CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) {
+// Note: changes to this function should also be reflected in the
+// CodeCompletionResult overload where appropriate.
+CompletionItemKind
+toCompletionItemKind(index::SymbolKind Kind,
+ const llvm::StringRef *Signature = nullptr) {
   using SK = index::SymbolKind;
   switch (Kind) {
   case SK::Unknown:
@@ -99,7 +103,10 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind 
Kind) {
   case SK::NamespaceAlias:
 return CompletionItemKind::Module;
   case SK::Macro:
-return CompletionItemKind::Text;
+// Use macro signature (if provided) to tell apart function-like and
+// object-like macros.
+return Signature && Signature->contains('(') ? CompletionItemKind::Function
+ : 
CompletionItemKind::Constant;
   case SK::Enum:
 return CompletionItemKind::Enum;
   case SK::Struct:
@@ -150,6 +157,8 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind 
Kind) {
   llvm_unreachable("Unhandled clang::index::SymbolKind.");
 }
 
+// Note: changes to this function should also be reflected in the
+// index::SymbolKind overload where appropriate.
 CompletionItemKind toCompletionItemKind(const CodeCompletionResult ,
 CodeCompletionContext::Kind CtxKind) {
   if (Res.Declaration)
@@ -379,7 +388,8 @@ struct CodeCompletionBuilder {
   if (Completion.Scope.empty())
 Completion.Scope = std::string(C.IndexResult->Scope);
   if (Completion.Kind == CompletionItemKind::Missing)
-Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind);
+Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind,
+   >Signature);
   if (Completion.Name.empty())
 Completion.Name = std::string(C.IndexResult->Name);
   if (Completion.FilterText.empty())
diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp 
b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
index 6d387fec9b3851..abdf239a3dfb19 100644
--- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -671,7 +671,8 @@ TEST(CompletionTest, Kinds) {
   #define MACRO 10
   int X = ^
   )cpp",
-  {func("indexFunction"), var("indexVariable"), cls("indexClass")});
+  {func("indexFunction"), var("indexVariable"), cls("indexClass"),
+   macro("indexObjMacro"), macro("indexFuncMacro", "(x, y)")});
   EXPECT_THAT(Results.Completions,
   AllOf(has("function", CompletionItemKind::Function),
 has("variable", CompletionItemKind::Variable),
@@ -680,7 +681,9 @@ TEST(CompletionTest, Kinds) {
 has("MACRO", CompletionItemKind::Constant),
 has("indexFunction", CompletionItemKind::Function),
 has("indexVariable", CompletionItemKind::Variable),
-has("indexClass", CompletionItemKind::Class)));
+has("indexClass", CompletionItemKind::Class),
+has("indexObjMacro", CompletionItemKind::Constant),
+has("indexFuncMacro", CompletionItemKind::Function)));
 
   Results = completions("nam^");
   EXPECT_THAT(Results.Completions,
diff --git a/clang-tools-extra/clangd/unittests/TestIndex.cpp 
b/clang-tools-extra/clangd/unittests/TestIndex.cpp
index 278336bdde2ee5..b13a5d32d17524 100644
--- a/clang-tools-extra/clangd/unittests/TestIndex.cpp
+++ b/clang-tools-extra/clangd/unittests/TestIndex.cpp
@@ -38,7 +38,7 @@ static std::string replace(llvm::StringRef Haystack, 
llvm::StringRef Needle,
 // Helpers to produce fake index symbols for memIndex() or completions().
 // USRFormat is a regex 

[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-11 Thread Haojian Wu via cfe-commits


@@ -89,7 +89,9 @@ const CodeCompleteOptions::CodeCompletionRankingModel
 
 namespace {
 
-CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) {
+CompletionItemKind
+toCompletionItemKind(index::SymbolKind Kind,
+ const llvm::StringRef *Signature = nullptr) {

hokein wrote:

nit: can you add a comment stating that this function needs to remain 
synchronized with the one below?

https://github.com/llvm/llvm-project/pull/88236
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-11 Thread Haojian Wu via cfe-commits

https://github.com/hokein edited https://github.com/llvm/llvm-project/pull/88236
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-11 Thread Haojian Wu via cfe-commits

https://github.com/hokein approved this pull request.


https://github.com/llvm/llvm-project/pull/88236
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-10 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clangd

Author: Nathan Ridge (HighCommander4)


Changes

This was fixed in https://github.com/clangd/clangd/issues/1484 for Sema 
completions but the fix did not apply to index completions.

Fixes https://github.com/clangd/clangd/issues/2002

---
Full diff: https://github.com/llvm/llvm-project/pull/88236.diff


4 Files Affected:

- (modified) clang-tools-extra/clangd/CodeComplete.cpp (+9-3) 
- (modified) clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp (+5-2) 
- (modified) clang-tools-extra/clangd/unittests/TestIndex.cpp (+6-1) 
- (modified) clang-tools-extra/clangd/unittests/TestIndex.h (+3-1) 


``diff
diff --git a/clang-tools-extra/clangd/CodeComplete.cpp 
b/clang-tools-extra/clangd/CodeComplete.cpp
index 0e5f08cec440ce..38bc2552195ef7 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -89,7 +89,9 @@ const CodeCompleteOptions::CodeCompletionRankingModel
 
 namespace {
 
-CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) {
+CompletionItemKind
+toCompletionItemKind(index::SymbolKind Kind,
+ const llvm::StringRef *Signature = nullptr) {
   using SK = index::SymbolKind;
   switch (Kind) {
   case SK::Unknown:
@@ -99,7 +101,10 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind 
Kind) {
   case SK::NamespaceAlias:
 return CompletionItemKind::Module;
   case SK::Macro:
-return CompletionItemKind::Text;
+// Use macro signature (if provided) to tell apart function-like and
+// object-like macros.
+return Signature && Signature->contains('(') ? CompletionItemKind::Function
+ : 
CompletionItemKind::Constant;
   case SK::Enum:
 return CompletionItemKind::Enum;
   case SK::Struct:
@@ -379,7 +384,8 @@ struct CodeCompletionBuilder {
   if (Completion.Scope.empty())
 Completion.Scope = std::string(C.IndexResult->Scope);
   if (Completion.Kind == CompletionItemKind::Missing)
-Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind);
+Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind,
+   >Signature);
   if (Completion.Name.empty())
 Completion.Name = std::string(C.IndexResult->Name);
   if (Completion.FilterText.empty())
diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp 
b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
index 6d387fec9b3851..abdf239a3dfb19 100644
--- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -671,7 +671,8 @@ TEST(CompletionTest, Kinds) {
   #define MACRO 10
   int X = ^
   )cpp",
-  {func("indexFunction"), var("indexVariable"), cls("indexClass")});
+  {func("indexFunction"), var("indexVariable"), cls("indexClass"),
+   macro("indexObjMacro"), macro("indexFuncMacro", "(x, y)")});
   EXPECT_THAT(Results.Completions,
   AllOf(has("function", CompletionItemKind::Function),
 has("variable", CompletionItemKind::Variable),
@@ -680,7 +681,9 @@ TEST(CompletionTest, Kinds) {
 has("MACRO", CompletionItemKind::Constant),
 has("indexFunction", CompletionItemKind::Function),
 has("indexVariable", CompletionItemKind::Variable),
-has("indexClass", CompletionItemKind::Class)));
+has("indexClass", CompletionItemKind::Class),
+has("indexObjMacro", CompletionItemKind::Constant),
+has("indexFuncMacro", CompletionItemKind::Function)));
 
   Results = completions("nam^");
   EXPECT_THAT(Results.Completions,
diff --git a/clang-tools-extra/clangd/unittests/TestIndex.cpp 
b/clang-tools-extra/clangd/unittests/TestIndex.cpp
index 278336bdde2ee5..b13a5d32d17524 100644
--- a/clang-tools-extra/clangd/unittests/TestIndex.cpp
+++ b/clang-tools-extra/clangd/unittests/TestIndex.cpp
@@ -38,7 +38,7 @@ static std::string replace(llvm::StringRef Haystack, 
llvm::StringRef Needle,
 // Helpers to produce fake index symbols for memIndex() or completions().
 // USRFormat is a regex replacement string for the unqualified part of the USR.
 Symbol sym(llvm::StringRef QName, index::SymbolKind Kind,
-   llvm::StringRef USRFormat) {
+   llvm::StringRef USRFormat, llvm::StringRef Signature) {
   Symbol Sym;
   std::string USR = "c:"; // We synthesize a few simple cases of USRs by hand!
   size_t Pos = QName.rfind("::");
@@ -55,6 +55,7 @@ Symbol sym(llvm::StringRef QName, index::SymbolKind Kind,
   Sym.SymInfo.Kind = Kind;
   Sym.Flags |= Symbol::IndexedForCodeCompletion;
   Sym.Origin = SymbolOrigin::Static;
+  Sym.Signature = Signature;
   return Sym;
 }
 
@@ -86,6 +87,10 @@ Symbol conceptSym(llvm::StringRef Name) {
   return sym(Name, index::SymbolKind::Concept, "@CT@\\0");
 }
 

[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-10 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang-tools-extra

Author: Nathan Ridge (HighCommander4)


Changes

This was fixed in https://github.com/clangd/clangd/issues/1484 for Sema 
completions but the fix did not apply to index completions.

Fixes https://github.com/clangd/clangd/issues/2002

---
Full diff: https://github.com/llvm/llvm-project/pull/88236.diff


4 Files Affected:

- (modified) clang-tools-extra/clangd/CodeComplete.cpp (+9-3) 
- (modified) clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp (+5-2) 
- (modified) clang-tools-extra/clangd/unittests/TestIndex.cpp (+6-1) 
- (modified) clang-tools-extra/clangd/unittests/TestIndex.h (+3-1) 


``diff
diff --git a/clang-tools-extra/clangd/CodeComplete.cpp 
b/clang-tools-extra/clangd/CodeComplete.cpp
index 0e5f08cec440ce..38bc2552195ef7 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -89,7 +89,9 @@ const CodeCompleteOptions::CodeCompletionRankingModel
 
 namespace {
 
-CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) {
+CompletionItemKind
+toCompletionItemKind(index::SymbolKind Kind,
+ const llvm::StringRef *Signature = nullptr) {
   using SK = index::SymbolKind;
   switch (Kind) {
   case SK::Unknown:
@@ -99,7 +101,10 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind 
Kind) {
   case SK::NamespaceAlias:
 return CompletionItemKind::Module;
   case SK::Macro:
-return CompletionItemKind::Text;
+// Use macro signature (if provided) to tell apart function-like and
+// object-like macros.
+return Signature && Signature->contains('(') ? CompletionItemKind::Function
+ : 
CompletionItemKind::Constant;
   case SK::Enum:
 return CompletionItemKind::Enum;
   case SK::Struct:
@@ -379,7 +384,8 @@ struct CodeCompletionBuilder {
   if (Completion.Scope.empty())
 Completion.Scope = std::string(C.IndexResult->Scope);
   if (Completion.Kind == CompletionItemKind::Missing)
-Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind);
+Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind,
+   >Signature);
   if (Completion.Name.empty())
 Completion.Name = std::string(C.IndexResult->Name);
   if (Completion.FilterText.empty())
diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp 
b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
index 6d387fec9b3851..abdf239a3dfb19 100644
--- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -671,7 +671,8 @@ TEST(CompletionTest, Kinds) {
   #define MACRO 10
   int X = ^
   )cpp",
-  {func("indexFunction"), var("indexVariable"), cls("indexClass")});
+  {func("indexFunction"), var("indexVariable"), cls("indexClass"),
+   macro("indexObjMacro"), macro("indexFuncMacro", "(x, y)")});
   EXPECT_THAT(Results.Completions,
   AllOf(has("function", CompletionItemKind::Function),
 has("variable", CompletionItemKind::Variable),
@@ -680,7 +681,9 @@ TEST(CompletionTest, Kinds) {
 has("MACRO", CompletionItemKind::Constant),
 has("indexFunction", CompletionItemKind::Function),
 has("indexVariable", CompletionItemKind::Variable),
-has("indexClass", CompletionItemKind::Class)));
+has("indexClass", CompletionItemKind::Class),
+has("indexObjMacro", CompletionItemKind::Constant),
+has("indexFuncMacro", CompletionItemKind::Function)));
 
   Results = completions("nam^");
   EXPECT_THAT(Results.Completions,
diff --git a/clang-tools-extra/clangd/unittests/TestIndex.cpp 
b/clang-tools-extra/clangd/unittests/TestIndex.cpp
index 278336bdde2ee5..b13a5d32d17524 100644
--- a/clang-tools-extra/clangd/unittests/TestIndex.cpp
+++ b/clang-tools-extra/clangd/unittests/TestIndex.cpp
@@ -38,7 +38,7 @@ static std::string replace(llvm::StringRef Haystack, 
llvm::StringRef Needle,
 // Helpers to produce fake index symbols for memIndex() or completions().
 // USRFormat is a regex replacement string for the unqualified part of the USR.
 Symbol sym(llvm::StringRef QName, index::SymbolKind Kind,
-   llvm::StringRef USRFormat) {
+   llvm::StringRef USRFormat, llvm::StringRef Signature) {
   Symbol Sym;
   std::string USR = "c:"; // We synthesize a few simple cases of USRs by hand!
   size_t Pos = QName.rfind("::");
@@ -55,6 +55,7 @@ Symbol sym(llvm::StringRef QName, index::SymbolKind Kind,
   Sym.SymInfo.Kind = Kind;
   Sym.Flags |= Symbol::IndexedForCodeCompletion;
   Sym.Origin = SymbolOrigin::Static;
+  Sym.Signature = Signature;
   return Sym;
 }
 
@@ -86,6 +87,10 @@ Symbol conceptSym(llvm::StringRef Name) {
   return sym(Name, index::SymbolKind::Concept, 

[clang-tools-extra] [clangd] Avoid using CompletionItemKind.Text for macro completions from the index (PR #88236)

2024-04-10 Thread Nathan Ridge via cfe-commits

https://github.com/HighCommander4 created 
https://github.com/llvm/llvm-project/pull/88236

This was fixed in https://github.com/clangd/clangd/issues/1484 for Sema 
completions but the fix did not apply to index completions.

Fixes https://github.com/clangd/clangd/issues/2002

>From 323adbf6501a3482973a8ebb3fa06e4061252321 Mon Sep 17 00:00:00 2001
From: Nathan Ridge 
Date: Wed, 10 Apr 2024 02:47:23 -0400
Subject: [PATCH] [clangd] Avoid using CompletionItemKind.Text for macro
 completions from the index

This was fixed in https://github.com/clangd/clangd/issues/1484 for Sema
completions but the fix did not apply to index completions.

Fixes https://github.com/clangd/clangd/issues/2002
---
 clang-tools-extra/clangd/CodeComplete.cpp| 12 +---
 .../clangd/unittests/CodeCompleteTests.cpp   |  7 +--
 clang-tools-extra/clangd/unittests/TestIndex.cpp |  7 ++-
 clang-tools-extra/clangd/unittests/TestIndex.h   |  4 +++-
 4 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/clang-tools-extra/clangd/CodeComplete.cpp 
b/clang-tools-extra/clangd/CodeComplete.cpp
index 0e5f08cec440ce..38bc2552195ef7 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -89,7 +89,9 @@ const CodeCompleteOptions::CodeCompletionRankingModel
 
 namespace {
 
-CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) {
+CompletionItemKind
+toCompletionItemKind(index::SymbolKind Kind,
+ const llvm::StringRef *Signature = nullptr) {
   using SK = index::SymbolKind;
   switch (Kind) {
   case SK::Unknown:
@@ -99,7 +101,10 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind 
Kind) {
   case SK::NamespaceAlias:
 return CompletionItemKind::Module;
   case SK::Macro:
-return CompletionItemKind::Text;
+// Use macro signature (if provided) to tell apart function-like and
+// object-like macros.
+return Signature && Signature->contains('(') ? CompletionItemKind::Function
+ : 
CompletionItemKind::Constant;
   case SK::Enum:
 return CompletionItemKind::Enum;
   case SK::Struct:
@@ -379,7 +384,8 @@ struct CodeCompletionBuilder {
   if (Completion.Scope.empty())
 Completion.Scope = std::string(C.IndexResult->Scope);
   if (Completion.Kind == CompletionItemKind::Missing)
-Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind);
+Completion.Kind = toCompletionItemKind(C.IndexResult->SymInfo.Kind,
+   >Signature);
   if (Completion.Name.empty())
 Completion.Name = std::string(C.IndexResult->Name);
   if (Completion.FilterText.empty())
diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp 
b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
index 6d387fec9b3851..abdf239a3dfb19 100644
--- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -671,7 +671,8 @@ TEST(CompletionTest, Kinds) {
   #define MACRO 10
   int X = ^
   )cpp",
-  {func("indexFunction"), var("indexVariable"), cls("indexClass")});
+  {func("indexFunction"), var("indexVariable"), cls("indexClass"),
+   macro("indexObjMacro"), macro("indexFuncMacro", "(x, y)")});
   EXPECT_THAT(Results.Completions,
   AllOf(has("function", CompletionItemKind::Function),
 has("variable", CompletionItemKind::Variable),
@@ -680,7 +681,9 @@ TEST(CompletionTest, Kinds) {
 has("MACRO", CompletionItemKind::Constant),
 has("indexFunction", CompletionItemKind::Function),
 has("indexVariable", CompletionItemKind::Variable),
-has("indexClass", CompletionItemKind::Class)));
+has("indexClass", CompletionItemKind::Class),
+has("indexObjMacro", CompletionItemKind::Constant),
+has("indexFuncMacro", CompletionItemKind::Function)));
 
   Results = completions("nam^");
   EXPECT_THAT(Results.Completions,
diff --git a/clang-tools-extra/clangd/unittests/TestIndex.cpp 
b/clang-tools-extra/clangd/unittests/TestIndex.cpp
index 278336bdde2ee5..b13a5d32d17524 100644
--- a/clang-tools-extra/clangd/unittests/TestIndex.cpp
+++ b/clang-tools-extra/clangd/unittests/TestIndex.cpp
@@ -38,7 +38,7 @@ static std::string replace(llvm::StringRef Haystack, 
llvm::StringRef Needle,
 // Helpers to produce fake index symbols for memIndex() or completions().
 // USRFormat is a regex replacement string for the unqualified part of the USR.
 Symbol sym(llvm::StringRef QName, index::SymbolKind Kind,
-   llvm::StringRef USRFormat) {
+   llvm::StringRef USRFormat, llvm::StringRef Signature) {
   Symbol Sym;
   std::string USR = "c:"; // We synthesize a few simple cases of USRs by hand!
   size_t Pos = QName.rfind("::");
@@ -55,6 +55,7 @@