Author: Hugo Rambure Date: 2026-02-13T02:31:52-05:00 New Revision: b9f4c7887380ea52c0ce101548db584d329fdd70
URL: https://github.com/llvm/llvm-project/commit/b9f4c7887380ea52c0ce101548db584d329fdd70 DIFF: https://github.com/llvm/llvm-project/commit/b9f4c7887380ea52c0ce101548db584d329fdd70.diff LOG: [clangd] Respect ArgumentLists setting for lambdas (#181009) Fixes https://github.com/clangd/clangd/issues/1861 Added: Modified: clang-tools-extra/clangd/CodeComplete.cpp clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp index f43b5e71a1dfa..7c390f9c8219d 100644 --- a/clang-tools-extra/clangd/CodeComplete.cpp +++ b/clang-tools-extra/clangd/CodeComplete.cpp @@ -590,10 +590,12 @@ struct CodeCompletionBuilder { if (Snippet->empty()) return ""; - bool MayHaveArgList = Completion.Kind == CompletionItemKind::Function || - Completion.Kind == CompletionItemKind::Method || - Completion.Kind == CompletionItemKind::Constructor || - Completion.Kind == CompletionItemKind::Text /*Macro*/; + bool MayHaveArgList = + Completion.Kind == CompletionItemKind::Function || + Completion.Kind == CompletionItemKind::Method || + Completion.Kind == CompletionItemKind::Constructor || + Completion.Kind == CompletionItemKind::Text /*Macro*/ || + Completion.Kind == CompletionItemKind::Variable /*Lambda*/; // If likely arg list already exists, don't add new parens & placeholders. // Snippet: function(int x, int y) // func^(1,2) -> function(1, 2) @@ -628,7 +630,7 @@ struct CodeCompletionBuilder { return *Snippet; // Replace argument snippets with a simplified pattern. - if (MayHaveArgList) { + if (MayHaveArgList && llvm::StringRef(*Snippet).contains("(")) { // Functions snippets can be of 2 types: // - containing only function arguments, e.g. // foo(${1:int p1}, ${2:int p2}); diff --git a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp index 267910b571279..31f2d8bd68703 100644 --- a/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp +++ b/clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp @@ -2821,6 +2821,18 @@ TEST(CompletionTest, ArgumentListsPolicy) { EXPECT_THAT(Results.Completions, UnorderedElementsAre(AllOf( named("FOO"), snippetSuffix("($0)")))); } + { + auto Results = completions( + R"cpp( + void function() { + auto Lambda = [](int a, const double &b) {return 1.f;}; + Lam^ + })cpp", + {}, Opts); + EXPECT_THAT( + Results.Completions, + UnorderedElementsAre(AllOf(named("Lambda"), snippetSuffix("($0)")))); + } { Opts.ArgumentLists = Config::ArgumentListsPolicy::None; auto Results = completions( _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
