[clang] [clang-tools-extra] [clangd] Fixed signature help for static call operator (C++23) (PR #199192)

via cfe-commits cfe-commits at lists.llvm.org
Sun May 24 14:17:20 PDT 2026


================
@@ -7869,9 +7869,10 @@ void Sema::AddFunctionCandidates(const UnresolvedSetImpl &Fns,
       // Slice the first argument (which is the base) when we access
       // static method as non-static.
       if (Args.size() > 0 &&
-          (!Args[0] || (FirstArgumentIsBase && isa<CXXMethodDecl>(FD) &&
-                        !isa<CXXConstructorDecl>(FD)))) {
-        assert(cast<CXXMethodDecl>(FD)->isStatic());
+          (!Args[0] ||
+           (isa<CXXMethodDecl>(FD) && !isa<CXXConstructorDecl>(FD) &&
+            (FirstArgumentIsBase || cast<CXXMethodDecl>(FD)->isStatic())))) {
----------------
timon-ul wrote:

I think if we can we do not want to let all static methods through here, but only for FirstArgumentIsBase or it is the function operator. For this I think the best option is to just do FD->getOverloadedOperator() == OO_Call.

https://github.com/llvm/llvm-project/pull/199192


More information about the cfe-commits mailing list