diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-02-16 16:54:39 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-02-16 17:04:26 +0100 |
commit | c79f25d5a6b9aa645c0068db07b389ce615948b1 (patch) | |
tree | 8accd82448284736df0d3ca99422c79b8cbe7926 /src/shared/cplusplus/Parser.cpp | |
parent | 8c2928e12e3d83af16e1eeec97b3829ce653b47d (diff) | |
download | qt-creator-c79f25d5a6b9aa645c0068db07b389ce615948b1.tar.gz |
Fixed Q_PROPERTY parsing to handle all possible cases.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index fd2efcf978..845fabcfe5 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -1806,34 +1806,30 @@ bool Parser::parseQtPropertyDeclaration(DeclarationAST *&node) case Token_READ: case Token_WRITE: case Token_RESET: - case Token_NOTIFY: { - QtPropertyDeclarationNamingItemAST *nItem = new (_pool) QtPropertyDeclarationNamingItemAST; - nItem->item_name_token = consumeToken(); - nItem->name_value = new (_pool) SimpleNameAST; - match(T_IDENTIFIER, &nItem->name_value->identifier_token); - item = nItem; - break; - } - + case Token_NOTIFY: case Token_DESIGNABLE: case Token_SCRIPTABLE: case Token_STORED: case Token_USER: { - QtPropertyDeclarationBoolItemAST *bItem = new (_pool) QtPropertyDeclarationBoolItemAST; - bItem->item_name_token = consumeToken(); + unsigned item_name_token = consumeToken(); ExpressionAST *expr = 0; - if (parseBoolLiteral(expr)) { - bItem->bool_value = expr->asBoolLiteral(); + if (parsePostfixExpression(expr)) { + QtPropertyDeclarationItemAST *bItem = + new (_pool) QtPropertyDeclarationItemAST; + bItem->item_name_token = item_name_token; + bItem->expression = expr; item = bItem; } else { - _translationUnit->error(cursor(), "expected `true' or `false' before `%s'", tok().spell()); + _translationUnit->error(cursor(), + "expected expression before `%s'", + tok().spell()); } break; } case Token_CONSTANT: case Token_FINAL: { - QtPropertyDeclarationFlaggingItemAST *fItem = new (_pool) QtPropertyDeclarationFlaggingItemAST; + QtPropertyDeclarationItemAST *fItem = new (_pool) QtPropertyDeclarationItemAST; fItem->item_name_token = consumeToken(); item = fItem; break; |