forked from qt-creator/qt-creator
C++: Add parsing of Q_PRIVATE_PROPERTY.
Reviewed-by: Roberto Raggi
This commit is contained in:
@@ -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:
|
||||
|
Reference in New Issue
Block a user