diff options
author | Eike Ziller <eike.ziller@digia.com> | 2014-07-22 16:11:13 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2014-07-22 16:11:40 +0200 |
commit | 0374a9782e2f4fd25ad56b1e1b66b85b10caefaa (patch) | |
tree | 0ccfcb695bcce240bdc0dceebe4c2beb0728e6d8 /src/libs/3rdparty/cplusplus/Parser.cpp | |
parent | 341ec7f977a60f5de089b795915a3a81edbb2281 (diff) | |
parent | 01d071537815e4fbe8c26e2324155734e4ffd734 (diff) | |
download | qt-creator-0374a9782e2f4fd25ad56b1e1b66b85b10caefaa.tar.gz |
Merge remote-tracking branch 'origin/3.2' into HEAD
Change-Id: I257bb9310bb3bde493aff4cd43091ec63fcb5203
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Parser.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 2ed5afc54c..3cf5a4e2d6 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -3050,7 +3050,7 @@ bool Parser::parseExpressionStatement(StatementAST *&node) return parsed; } -bool Parser::parseStatement(StatementAST *&node) +bool Parser::parseStatement(StatementAST *&node, bool blockLabeledStatement) { DEBUG_THIS_RULE(); switch (LA()) { @@ -3077,6 +3077,8 @@ bool Parser::parseStatement(StatementAST *&node) case T_CASE: case T_DEFAULT: + if (blockLabeledStatement) + return false; return parseLabeledStatement(node); case T_BREAK: @@ -3145,8 +3147,11 @@ bool Parser::parseStatement(StatementAST *&node) } default: - if (LA() == T_IDENTIFIER && LA(2) == T_COLON) + if (LA() == T_IDENTIFIER && LA(2) == T_COLON) { + if (blockLabeledStatement) + return false; return parseLabeledStatement(node); + } return parseExpressionOrDeclarationStatement(node); } // switch @@ -3617,7 +3622,7 @@ bool Parser::parseLabeledStatement(StatementAST *&node) LabeledStatementAST *ast = new (_pool) LabeledStatementAST; ast->label_token = consumeToken(); ast->colon_token = consumeToken(); - parseStatement(ast->statement); + parseStatement(ast->statement, /*blockLabeledStatement =*/ true); node = ast; return true; } @@ -3627,7 +3632,7 @@ bool Parser::parseLabeledStatement(StatementAST *&node) LabeledStatementAST *ast = new (_pool) LabeledStatementAST; ast->label_token = consumeToken(); match(T_COLON, &ast->colon_token); - parseStatement(ast->statement); + parseStatement(ast->statement, /*blockLabeledStatement =*/ true); node = ast; return true; } @@ -3637,7 +3642,7 @@ bool Parser::parseLabeledStatement(StatementAST *&node) ast->case_token = consumeToken(); parseConstantExpression(ast->expression); match(T_COLON, &ast->colon_token); - parseStatement(ast->statement); + parseStatement(ast->statement, /*blockLabeledStatement =*/ true); node = ast; return true; } |