summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Parser.cpp
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2010-12-08 15:08:03 +0100
committerChristian Kamm <christian.d.kamm@nokia.com>2011-01-04 15:58:22 +0100
commit16542241c91d6a4296bfbd18077de4eff1f43c8b (patch)
tree88a4487347d1802eefbb7c9690a52f95e38188d2 /src/shared/cplusplus/Parser.cpp
parent40725cfd6db30ccb06239a3fb04de80f1e8d276e (diff)
downloadqt-creator-16542241c91d6a4296bfbd18077de4eff1f43c8b.tar.gz
C++: Add parsing of Q_PRIVATE_PROPERTY.
Reviewed-by: Roberto Raggi
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r--src/shared/cplusplus/Parser.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp
index 4bd4a196aa..d7b3dad29f 100644
--- a/src/shared/cplusplus/Parser.cpp
+++ b/src/shared/cplusplus/Parser.cpp
@@ -286,6 +286,7 @@ void Parser::skipUntilDeclaration()
case T_Q_SIGNALS:
case T_Q_SLOTS:
case T_Q_PROPERTY:
+ case T_Q_PRIVATE_PROPERTY:
case T_Q_ENUMS:
case T_Q_FLAGS:
case T_Q_INTERFACES:
@@ -1972,13 +1973,26 @@ bool Parser::parseAccessDeclaration(DeclarationAST *&node)
bool Parser::parseQtPropertyDeclaration(DeclarationAST *&node)
{
DEBUG_THIS_RULE();
- if (LA() != T_Q_PROPERTY)
+ const bool privateProperty = (LA() == T_Q_PRIVATE_PROPERTY);
+ if (LA() != T_Q_PROPERTY && !privateProperty)
return false;
QtPropertyDeclarationAST *ast = new (_pool)QtPropertyDeclarationAST;
ast->property_specifier_token = consumeToken();
if (LA() == T_LPAREN) {
ast->lparen_token = consumeToken();
+
+ if (privateProperty) {
+ if (parsePostfixExpression(ast->expression)) {
+ match(T_COMMA, &ast->comma_token);
+ } else {
+ error(cursor(),
+ "expected expression before `%s'",
+ tok().spell());
+ return true;
+ }
+ }
+
parseTypeId(ast->type_id);
SimpleNameAST *property_name = new (_pool) SimpleNameAST;
@@ -2238,6 +2252,7 @@ bool Parser::parseMemberSpecification(DeclarationAST *&node, ClassSpecifierAST *
return parseAccessDeclaration(node);
case T_Q_PROPERTY:
+ case T_Q_PRIVATE_PROPERTY:
return parseQtPropertyDeclaration(node);
case T_Q_ENUMS: