diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-02-09 17:01:05 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-02-10 11:07:18 +0100 |
commit | b1af22b3ab5e40e47ccf51aef67a508bff7592b2 (patch) | |
tree | 8f950c4ed93d51153d351080a415e80af9b2a82d /src/shared/cplusplus/Parser.cpp | |
parent | 28d72550d3550df1484b580c27f6ac3e776d1062 (diff) | |
download | qt-creator-b1af22b3ab5e40e47ccf51aef67a508bff7592b2.tar.gz |
Fixed error recovery when failing to parse Q_PROPERTY.
Diffstat (limited to 'src/shared/cplusplus/Parser.cpp')
-rw-r--r-- | src/shared/cplusplus/Parser.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/shared/cplusplus/Parser.cpp b/src/shared/cplusplus/Parser.cpp index a9fd9f0d50..7bc832ffa6 100644 --- a/src/shared/cplusplus/Parser.cpp +++ b/src/shared/cplusplus/Parser.cpp @@ -1822,11 +1822,12 @@ bool Parser::parseQtPropertyDeclaration(DeclarationAST *&node) QtPropertyDeclarationBoolItemAST *bItem = new (_pool) QtPropertyDeclarationBoolItemAST; bItem->item_name_token = consumeToken(); ExpressionAST *expr = 0; - if (parseBoolLiteral(expr)) + if (parseBoolLiteral(expr)) { bItem->bool_value = expr->asBoolLiteral(); - else + item = bItem; + } else { _translationUnit->error(cursor(), "expected `true' or `false' before `%s'", tok().spell()); - item = bItem; + } break; } @@ -1840,16 +1841,20 @@ bool Parser::parseQtPropertyDeclaration(DeclarationAST *&node) default: _translationUnit->error(cursor(), "expected `)' before `%s'", tok().spell()); - return true; + // skip the token + consumeToken(); } if (item) { *iter = new (_pool) QtPropertyDeclarationItemListAST; (*iter)->value = item; iter = &(*iter)->next; } + } else if (!LA()) { + break; } else { _translationUnit->error(cursor(), "expected `)' before `%s'", tok().spell()); - break; + // skip the token + consumeToken(); } } } |