From 08a85a51bf6dac834dba3fdb0431db25742a91b6 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Mon, 13 Jul 2009 11:15:45 +0200 Subject: [PATCH] Added @synthesize and fixed @property. --- src/shared/cplusplus/Parser.cpp | 39 ++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index c3faca243fd..c8a354811f8 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); } -- GitLab