diff options
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Parser.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index da67e51b63..6fccebb015 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -5238,6 +5238,14 @@ bool Parser::parseUnaryExpression(ExpressionAST *&node) return true; } + + case T_NOEXCEPT: { + if (!_languageFeatures.cxx11Enabled) + break; + + return parseNoExceptOperatorExpression(node); + } + default: break; } // switch @@ -5674,6 +5682,19 @@ bool Parser::parseThrowExpression(ExpressionAST *&node) return false; } +bool Parser::parseNoExceptOperatorExpression(ExpressionAST *&node) +{ + DEBUG_THIS_RULE(); + if (_languageFeatures.cxx11Enabled && LA() == T_NOEXCEPT) { + NoExceptOperatorExpressionAST *ast = new (_pool) NoExceptOperatorExpressionAST; + ast->noexcept_token = consumeToken(); + parseExpression(ast->expression); + node = ast; + return true; + } + return false; +} + bool Parser::lookAtObjCSelector() const { switch (LA()) { |