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