aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/Bind.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Bind.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Bind.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp
index ec5f5d7c8a..e78636366f 100644
--- a/src/libs/3rdparty/cplusplus/Bind.cpp
+++ b/src/libs/3rdparty/cplusplus/Bind.cpp
@@ -473,7 +473,7 @@ void Bind::enumerator(EnumeratorAST *ast, Enum *symbol)
}
}
-bool Bind::visit(ExceptionSpecificationAST *ast)
+bool Bind::visit(DynamicExceptionSpecificationAST *ast)
{
(void) ast;
assert(!"unreachable");
@@ -487,11 +487,15 @@ FullySpecifiedType Bind::exceptionSpecification(ExceptionSpecificationAST *ast,
if (! ast)
return type;
- // unsigned throw_token = ast->throw_token;
- // unsigned lparen_token = ast->lparen_token;
- // unsigned dot_dot_dot_token = ast->dot_dot_dot_token;
- for (ExpressionListAST *it = ast->type_id_list; it; it = it->next) {
- ExpressionTy value = this->expression(it->value);
+ if (DynamicExceptionSpecificationAST *dyn = ast->asDynamicExceptionSpecification()) {
+ // unsigned throw_token = ast->throw_token;
+ // unsigned lparen_token = ast->lparen_token;
+ // unsigned dot_dot_dot_token = ast->dot_dot_dot_token;
+ for (ExpressionListAST *it = dyn->type_id_list; it; it = it->next) {
+ /*ExpressionTy value =*/ this->expression(it->value);
+ }
+ } else if (NoExceptSpecificationAST *no = ast->asNoExceptSpecification()) {
+ /*ExpressionTy value =*/ this->expression(no->expression);
}
// unsigned rparen_token = ast->rparen_token;
return type;