summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 89d540b6d1..fcddd740a6 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -2583,7 +2583,7 @@ bool Parser::parseObjCExpression(ExpressionAST *&node)
return parseObjCEncodeExpression(node);
case T_AT_PROTOCOL:
- break;
+ return parseObjCProtocolExpression(node);
case T_AT_SELECTOR:
break;
@@ -2610,6 +2610,19 @@ bool Parser::parseObjCEncodeExpression(ExpressionAST *&)
return true;
}
+bool Parser::parseObjCProtocolExpression(ExpressionAST *&)
+{
+ if (LA() != T_AT_PROTOCOL)
+ return false;
+
+ /*unsigned protocol_token = */ consumeToken();
+ unsigned lparen_token = 0, identifier_token = 0, rparen_token = 0;
+ match(T_LPAREN, &lparen_token);
+ match(T_IDENTIFIER, &identifier_token);
+ match(T_RPAREN, &rparen_token);
+ return true;
+}
+
bool Parser::parseNameId(NameAST *&name)
{
unsigned start = cursor();