diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2010-12-08 15:08:03 +0100 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2011-01-04 15:58:22 +0100 |
commit | 16542241c91d6a4296bfbd18077de4eff1f43c8b (patch) | |
tree | 88a4487347d1802eefbb7c9690a52f95e38188d2 /src/shared/cplusplus/Parser.cpp | |
parent | 40725cfd6db30ccb06239a3fb04de80f1e8d276e (diff) | |
download | qt-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.cpp | 17 |
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: |