diff --git a/src/shared/cplusplus/Symbols.cpp b/src/shared/cplusplus/Symbols.cpp
index 121ea0364ea7162168c349663fe06f02cc450e27..a76d69468becee4da4c0d22d0a6ceb5cac0756b4 100644
--- a/src/shared/cplusplus/Symbols.cpp
+++ b/src/shared/cplusplus/Symbols.cpp
@@ -956,8 +956,10 @@ bool ObjCMethod::hasReturnType() const
 
 unsigned ObjCMethod::argumentCount() const
 {
-    // ### port me
-    return memberCount();
+    const unsigned c = memberCount();
+    if (c > 0 && memberAt(c - 1)->isBlock())
+        return c - 1;
+    return c;
 }
 
 Symbol *ObjCMethod::argumentAt(unsigned index) const