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();