summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 32d9b0ac7f..5268ce9e32 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;
}