From c00e30187c85267645feeb5ad854020272b8a41e Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@trolltech.com> Date: Thu, 5 Feb 2009 12:41:57 +0100 Subject: [PATCH] Fixes: Parsing objc method definitions. --- src/shared/cplusplus/Parser.cpp | 36 +++++++++++++++++++++++++++++++++ src/shared/cplusplus/Parser.h | 2 ++ 2 files changed, 38 insertions(+) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 32d9b0ac7f4..5268ce9e321 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -3744,6 +3744,42 @@ bool Parser::parseObjCImplementation(DeclarationAST *&) } parseObjClassInstanceVariables(); + parseObjCMethodDefinitionList(); + return true; +} + +bool Parser::parseObjCMethodDefinitionList() +{ + while (LA() && LA() != T_AT_END) { + unsigned start = cursor(); + + switch (LA()) { + case T_PLUS: + case T_MINUS: + parseObjCMethodDefinition(); + + if (start == cursor()) + consumeToken(); + break; + + default: + // ### warning message + consumeToken(); + break; + } // switch + } + + return true; +} + +bool Parser::parseObjCMethodDefinition() +{ + if (LA() != T_MINUS && LA() != T_PLUS) + return false; + + parseObjCMethodSignature(); + StatementAST *function_body = 0; + parseFunctionBody(function_body); return true; } diff --git a/src/shared/cplusplus/Parser.h b/src/shared/cplusplus/Parser.h index 38a0840cf95..e6a29d199e2 100644 --- a/src/shared/cplusplus/Parser.h +++ b/src/shared/cplusplus/Parser.h @@ -230,6 +230,8 @@ public: bool parseObjCMessageReceiver(); bool parseObjCMessageArguments(); bool parseObjCSelectorArgs(); + bool parseObjCMethodDefinitionList(); + bool parseObjCMethodDefinition(); bool parseObjCProtocolRefs(); bool parseObjClassInstanceVariables(); -- GitLab