[clang] [clang-tools-extra] [clangd] Autocomplete fixes for methods (PR #165916)
Nathan Ridge via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 18 00:10:32 PST 2026
================
@@ -585,39 +591,94 @@ TEST(CompletionTest, HeuristicsForMemberFunctionCompletion) {
for (const auto &P : Code.points("canNotBeCall")) {
auto Results = completions(TU, P, /*IndexSymbols*/ {}, Opts);
EXPECT_THAT(Results.Completions,
- Contains(AllOf(named("method"), signature("(int) const"),
+ Contains(AllOf(named("method"), signature("(int name) const"),
snippetSuffix(""))));
- // We don't have any arguments to deduce against if this isn't a call.
- // Thus, we should emit these deducible template arguments explicitly.
EXPECT_THAT(
Results.Completions,
Contains(AllOf(named("generic"),
- signature("<typename T, typename U>(U, V)"),
- snippetSuffix("<${1:typename T}, ${2:typename U}>"))));
+ signature("<typename T, typename U>(U nameU, V nameV)"),
+ snippetSuffix(""))));
+ EXPECT_THAT(Results.Completions,
+ Contains(AllOf(named("staticMethod"), signature("(int name)"),
+ snippetSuffix(""))));
+ EXPECT_THAT(
+ Results.Completions,
+ Contains(AllOf(named("staticGeneric"),
+ signature("<typename T, int U>()"), snippetSuffix(""))));
}
for (const auto &P : Code.points("canBeCall")) {
auto Results = completions(TU, P, /*IndexSymbols*/ {}, Opts);
EXPECT_THAT(Results.Completions,
- Contains(AllOf(named("method"), signature("(int) const"),
- snippetSuffix("(${1:int})"))));
+ Contains(AllOf(named("method"), signature("(int name) const"),
+ snippetSuffix("(${1:int name})"))));
EXPECT_THAT(
Results.Completions,
- Contains(AllOf(named("generic"), signature("<typename T>(U, V)"),
- snippetSuffix("<${1:typename T}>(${2:U}, ${3:V})"))));
- }
-
- // static method will always keep the snippet
- for (const auto &P : Code.points()) {
- auto Results = completions(TU, P, /*IndexSymbols*/ {}, Opts);
+ Contains(AllOf(
+ named("generic"), signature("<typename T>(U nameU, V nameV)"),
+ snippetSuffix("<${1:typename T}>(${2:U nameU}, ${3:V nameV})"))));
EXPECT_THAT(Results.Completions,
- Contains(AllOf(named("staticMethod"), signature("(int)"),
- snippetSuffix("(${1:int})"))));
+ Contains(AllOf(named("staticMethod"), signature("(int name)"),
+ snippetSuffix("(${1:int name})"))));
EXPECT_THAT(Results.Completions,
Contains(AllOf(
named("staticGeneric"), signature("<typename T, int U>()"),
snippetSuffix("<${1:typename T}, ${2:int U}>()"))));
}
+
+ for (const auto &P : Code.points("canBeCallNoStatic")) {
+ auto Results = completions(TU, P, /*IndexSymbols*/ {}, Opts);
+ EXPECT_THAT(Results.Completions,
+ Contains(AllOf(named("method"), signature("(int name) const"),
+ snippetSuffix("(${1:int name})"))));
+ EXPECT_THAT(
+ Results.Completions,
+ Contains(AllOf(
+ named("generic"), signature("<typename T>(U nameU, V nameV)"),
+ snippetSuffix("<${1:typename T}>(${2:U nameU}, ${3:V nameV})"))));
+ }
+
+ for (const auto &P : Code.points("isDefinition")) {
+ auto Results = completions(TU, P, /*IndexSymbols*/ {}, Opts);
+
+ EXPECT_THAT(Results.Completions,
+ Contains(AllOf(named("method"), signature("(int name) const"),
+ snippetSuffix("(int name) const"))));
+ EXPECT_THAT(
+ Results.Completions,
+ Contains(AllOf(
+ named("generic"),
+ signature("<typename T, typename U>(U nameU, V nameV)"),
+ snippetSuffix("<typename T, typename U>(U nameU, V nameV)"))));
+ EXPECT_THAT(Results.Completions,
+ Contains(AllOf(named("staticMethod"), signature("(int name)"),
+ snippetSuffix("(int name)"))));
+ EXPECT_THAT(Results.Completions,
+ Contains(AllOf(named("staticGeneric"),
+ signature("<typename T, int U>()"),
+ snippetSuffix("<typename T, int U>()"))));
----------------
HighCommander4 wrote:
Likewise here
https://github.com/llvm/llvm-project/pull/165916
More information about the cfe-commits
mailing list