summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@trolltech.com>2009-02-05 12:41:57 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-02-05 14:30:25 +0100
commitc00e30187c85267645feeb5ad854020272b8a41e (patch)
tree0b1442476d31abdf7729a5b2b2aed6e853a2d0da /src/shared/cplusplus/Parser.cpp
parentf9737ddc4124653067ec0c9b48f0f68f8d9b2f4b (diff)
downloadqt-creator-c00e30187c85267645feeb5ad854020272b8a41e.tar.gz
Fixes: Parsing objc method definitions.
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;
}