From 4e7881577dce66476f76ad1362353c2bb8bbdac7 Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Thu, 6 Aug 2009 13:44:33 +0200
Subject: [PATCH] Parser fix for ObjC methods.

---
 src/shared/cplusplus/Parser.cpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index ea8b0f98e82..3ed4839928f 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -4347,14 +4347,16 @@ bool Parser::parseObjCMethodDefinition(DeclarationAST *&node)
     ObjCMethodDeclarationAST *ast = new (_pool) ObjCMethodDeclarationAST;
     ast->method_prototype = method_prototype;
 
+    // Objective-C allows you to write:
+    // - (void) foo; { body; }
+    // so a method is a forward declaration when it doesn't have a _body_.
+    // However, we still need to read the semicolon.
     if (LA() == T_SEMICOLON) {
-        // method declaration:
         ast->semicolon_token = consumeToken();
-    } else {
-        // method definition:
-        parseFunctionBody(ast->function_body);
     }
 
+    parseFunctionBody(ast->function_body);
+
     node = ast;
     return true;
 }
-- 
GitLab