[clang] [clang-tools-extra] [clang] skip explicit obj param in code complete (PR #146258)
Nathan Ridge via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 29 09:04:42 PDT 2025
================
@@ -4363,6 +4363,35 @@ TEST(CompletionTest, PreambleFromDifferentTarget) {
EXPECT_THAT(Result.Completions, Not(testing::IsEmpty()));
EXPECT_THAT(Signatures.signatures, Not(testing::IsEmpty()));
}
+
+TEST(CompletionTest, DeducingThisIgnoreSelf) {
+ Annotations Test(R"cpp(
+ struct A {
+ void f(this auto&& self, int arg);
+ };
+
+ int main() {
+ A a {};
+ a.^
+ }
+ )cpp");
+
+ auto TU = TestTU::withCode(Test.code());
+ TU.ExtraArgs = {"-std=c++23"};
+
+ auto Preamble = TU.preamble();
+ ASSERT_TRUE(Preamble);
+
+ CodeCompleteOptions Opts{};
+
+ MockFS FS;
+ auto Inputs = TU.inputs(FS);
+ auto Result = codeComplete(testPath(TU.Filename), Test.point(),
+ Preamble.get(), Inputs, Opts);
+
+ EXPECT_THAT(Result.Completions,
+ ElementsAre(AllOf(named("f"), snippetSuffix("(${1:int arg})"))));
----------------
HighCommander4 wrote:
For good measure, could you check both `signature()` and `snippetSuffix()`?
https://github.com/llvm/llvm-project/pull/146258
More information about the cfe-commits
mailing list