diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index 8f6cc63f68a..89d540b6d16 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -2580,7 +2580,7 @@ bool Parser::parseObjCExpression(ExpressionAST *&node) { switch (LA()) { case T_AT_ENCODE: - break; + return parseObjCEncodeExpression(node); case T_AT_PROTOCOL: break; @@ -2600,6 +2600,16 @@ bool Parser::parseObjCExpression(ExpressionAST *&node) return false; } +bool Parser::parseObjCEncodeExpression(ExpressionAST *&) +{ + if (LA() != T_AT_ENCODE) + return false; + + /*unsigned encode_token = */ consumeToken(); + parseObjCTypeName(); + return true; +} + bool Parser::parseNameId(NameAST *&name) { unsigned start = cursor(); diff --git a/src/shared/cplusplus/Parser.h b/src/shared/cplusplus/Parser.h index 9a12d7e845c..ba591b96d09 100644 --- a/src/shared/cplusplus/Parser.h +++ b/src/shared/cplusplus/Parser.h @@ -218,6 +218,8 @@ public: bool parseObjCProtocol(DeclarationAST *&node, SpecifierAST *attributes = 0); + bool parseObjCEncodeExpression(ExpressionAST *&node); + bool parseObjCProtocolRefs(); bool parseObjClassInstanceVariables(); bool parseObjCInterfaceMemberDeclaration();