diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index c4fdf3518e9642f7885cab89c25b6806a463f390..f3d9e7e462fd59f8c63dd29068788042d177fd7e 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -411,6 +411,12 @@ protected:
         accept(ast->argument_list);
         return false;
     }
+
+    virtual bool visit(ObjCMessageArgumentDeclarationAST *ast)
+    {
+        accept(ast->param_name);
+        return false;
+    }
 };
 
 
diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp
index 5d3646e3246fddbd25f52376cfa8dd95153289c2..a9ede700cad6c9bf793d67dc90838479138f1c23 100644
--- a/src/shared/cplusplus/CheckDeclaration.cpp
+++ b/src/shared/cplusplus/CheckDeclaration.cpp
@@ -694,8 +694,8 @@ bool CheckDeclaration::visit(ObjCMethodDeclarationAST *ast)
         symbol->setStorage(methodTy->storage());
     }
 
-    symbol->setStartOffset(tokenAt(selector->firstToken()).offset);
-    symbol->setEndOffset(tokenAt(selector->lastToken()).offset);
+    symbol->setStartOffset(tokenAt(ast->firstToken()).offset);
+    symbol->setEndOffset(tokenAt(ast->lastToken()).offset);
     symbol->setVisibility(semantic()->currentObjCVisibility());
 
     _scope->enterSymbol(symbol);
diff --git a/src/shared/cplusplus/CheckDeclarator.cpp b/src/shared/cplusplus/CheckDeclarator.cpp
index b16806139364f593b7e6f34db05bf91356a56ff3..860e7d3078d29a5d30518d25a3bd6f26406d7531 100644
--- a/src/shared/cplusplus/CheckDeclarator.cpp
+++ b/src/shared/cplusplus/CheckDeclarator.cpp
@@ -265,7 +265,6 @@ bool CheckDeclarator::visit(ObjCMethodPrototypeAST *ast)
 
     ObjCMethod *method = control()->newObjCMethod(location, ast->selector->selector_name);
     ast->symbol = method;
-    method->setSourceLocation(location);
     method->setScope(_scope);
     method->setVisibility(semantic()->currentVisibility());
     method->setReturnType(returnType);