summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2009-07-13 11:15:45 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2009-07-13 11:16:22 +0200
commit08a85a51bf6dac834dba3fdb0431db25742a91b6 (patch)
tree2dae2fe89b67cf5a4237f94699de914aaac924ef /src/shared/cplusplus
parent78cceecc28f06cf2c23e01e8daef4ceb6a5842d4 (diff)
downloadqt-creator-08a85a51bf6dac834dba3fdb0431db25742a91b6.tar.gz
Added @synthesize and fixed @property.
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r--src/shared/cplusplus/Parser.cpp39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index c3faca243f..c8a354811f 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -4061,6 +4061,39 @@ bool Parser::parseObjCMethodDefinitionList()
consumeToken();
break;
+ case T_AT_SYNTHESIZE: {
+ consumeToken();
+ unsigned identifier_token = 0;
+ match(T_IDENTIFIER, &identifier_token);
+
+ if (LA() == T_EQUAL) {
+ consumeToken();
+
+ unsigned aliassed_identifier_token = 0;
+ match(T_IDENTIFIER, &aliassed_identifier_token);
+ }
+
+ while (LA() == T_COMMA) {
+ consumeToken();
+
+ match(T_IDENTIFIER, &identifier_token);
+
+ if (LA() == T_EQUAL) {
+ consumeToken();
+
+ unsigned aliassed_identifier_token = 0;
+ match(T_IDENTIFIER, &aliassed_identifier_token);
+ }
+ }
+
+ unsigned semicolon_token = 0;
+ match(T_SEMICOLON, &semicolon_token);
+
+ break;
+ }
+
+ // TODO: @dynamic
+
default:
if (LA() == T_EXTERN && LA(2) == T_STRING_LITERAL) {
DeclarationAST *declaration = 0;
@@ -4235,7 +4268,11 @@ bool Parser::parseObjCPropertyDeclaration(DeclarationAST *&, SpecifierAST *)
if (LA() == T_LPAREN) {
unsigned lparen_token = 0, rparen_token = 0;
match(T_LPAREN, &lparen_token);
- while (parseObjCPropertyAttribute()) {
+ if (parseObjCPropertyAttribute()) {
+ while (LA() == T_COMMA) {
+ consumeToken();
+ parseObjCPropertyAttribute();
+ }
}
match(T_RPAREN, &rparen_token);
}