[clang-tools-extra] [clangd] Handle variables templates consistently with class templates in code completion (PR #85740)

2024-03-19 Thread Haojian Wu via cfe-commits

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


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


[clang-tools-extra] [clangd] Handle variables templates consistently with class templates in code completion (PR #85740)

2024-03-19 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clangd

Author: Nathan Ridge (HighCommander4)


Changes

The option --function-arg-placeholders=0 results in placeholders being omitted 
for class template argument lists. This patch extends the same treatment to 
variable template argument lists.

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

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


2 Files Affected:

- (modified) clang-tools-extra/clangd/CodeComplete.cpp (+2-1) 
- (modified) clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp (+4-1) 


``diff
diff --git a/clang-tools-extra/clangd/CodeComplete.cpp 
b/clang-tools-extra/clangd/CodeComplete.cpp
index 0e5f08cec440ce..72544b3c70aac5 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -619,7 +619,8 @@ struct CodeCompletionBuilder {
 }
 // 'CompletionItemKind::Interface' matches template type aliases.
 if (Completion.Kind == CompletionItemKind::Interface ||
-Completion.Kind == CompletionItemKind::Class) {
+Completion.Kind == CompletionItemKind::Class ||
+Completion.Kind == CompletionItemKind::Variable) {
   if (Snippet->front() != '<')
 return *Snippet; // Not an arg snippet?
 
diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp 
b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
index 6d387fec9b3851..49e91843aeec81 100644
--- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -2631,12 +2631,15 @@ TEST(CompletionTest, CompletionFunctionArgsDisabled) {
   class foo_class{};
   template 
   using foo_alias = T**;
+  template 
+  T foo_var = T{};
   void f() { foo_^ })cpp",
 {}, Opts);
 EXPECT_THAT(
 Results.Completions,
 UnorderedElementsAre(AllOf(named("foo_class"), snippetSuffix("<$0>")),
- AllOf(named("foo_alias"), 
snippetSuffix("<$0>";
+ AllOf(named("foo_alias"), snippetSuffix("<$0>")),
+ AllOf(named("foo_var"), snippetSuffix("<$0>";
   }
   {
 auto Results = completions(

``




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


[clang-tools-extra] [clangd] Handle variables templates consistently with class templates in code completion (PR #85740)

2024-03-19 Thread Nathan Ridge via cfe-commits

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

The option --function-arg-placeholders=0 results in placeholders being omitted 
for class template argument lists. This patch extends the same treatment to 
variable template argument lists.

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

>From 4a4f88571ee2cf4771194f09d3269c885ec069eb Mon Sep 17 00:00:00 2001
From: Nathan Ridge 
Date: Sun, 17 Mar 2024 18:17:48 -0400
Subject: [PATCH] [clangd] Handle variables templates consistently with class
 templates in code completion

The option --function-arg-placeholders=0 results in placeholders
being omitted for class template argument lists. This patch extends
the same treatment to variable template argument lists.

Fixes https://github.com/clangd/clangd/issues/1976
---
 clang-tools-extra/clangd/CodeComplete.cpp| 3 ++-
 clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp | 5 -
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/clang-tools-extra/clangd/CodeComplete.cpp 
b/clang-tools-extra/clangd/CodeComplete.cpp
index 0e5f08cec440ce..72544b3c70aac5 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -619,7 +619,8 @@ struct CodeCompletionBuilder {
 }
 // 'CompletionItemKind::Interface' matches template type aliases.
 if (Completion.Kind == CompletionItemKind::Interface ||
-Completion.Kind == CompletionItemKind::Class) {
+Completion.Kind == CompletionItemKind::Class ||
+Completion.Kind == CompletionItemKind::Variable) {
   if (Snippet->front() != '<')
 return *Snippet; // Not an arg snippet?
 
diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp 
b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
index 6d387fec9b3851..49e91843aeec81 100644
--- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -2631,12 +2631,15 @@ TEST(CompletionTest, CompletionFunctionArgsDisabled) {
   class foo_class{};
   template 
   using foo_alias = T**;
+  template 
+  T foo_var = T{};
   void f() { foo_^ })cpp",
 {}, Opts);
 EXPECT_THAT(
 Results.Completions,
 UnorderedElementsAre(AllOf(named("foo_class"), snippetSuffix("<$0>")),
- AllOf(named("foo_alias"), 
snippetSuffix("<$0>";
+ AllOf(named("foo_alias"), snippetSuffix("<$0>")),
+ AllOf(named("foo_var"), snippetSuffix("<$0>";
   }
   {
 auto Results = completions(

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits