diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index c906a123f87663accfaf439d58a1ad4aeb5413ad..69ff99708f6ddbdd5fed1bc11451a568921de690 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -5142,8 +5142,6 @@ bool Parser::parseObjCPropertyDeclaration(DeclarationAST *&node, SpecifierListAS
                 if (!parseObjCPropertyAttribute(last->value)) {
                     _translationUnit->error(_tokenIndex, "expected token `%s' got `%s'",
                                             Token::name(T_IDENTIFIER), tok().spell());
-                    while (LA() != T_RPAREN)
-                        consumeToken();
                     break;
                 }
             }
@@ -5152,9 +5150,11 @@ bool Parser::parseObjCPropertyDeclaration(DeclarationAST *&node, SpecifierListAS
         match(T_RPAREN, &(ast->rparen_token));
     }
 
-    parseSimpleDeclaration(ast->simple_declaration, /*accept-struct-declarators = */ true);
+    if (parseSimpleDeclaration(ast->simple_declaration, /*accept-struct-declarators = */ true))
+        node = ast;
+    else
+        _translationUnit->error(_tokenIndex, "expected a simple declaration");
 
-    node = ast;
     return true;
 }