summaryrefslogtreecommitdiff
path: root/src/libs/3rdparty/cplusplus/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Parser.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Parser.cpp21
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()) {