aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/Bind.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-11-06 14:28:12 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2020-11-11 15:41:27 +0000
commit59f8bd47023227afc5d8acbdbaf18972395c1c73 (patch)
tree7d511b87f67f47e6ca2f723dea9bda00ab1ea8ac /src/libs/3rdparty/cplusplus/Bind.cpp
parent30c1652d109e20a3efcaaef61be108c91426d6fa (diff)
CPlusPlus: Expose "static" specifier also for function declarations
To be able to do this, the parser needs to store the decl specifier list in FunctionDeclaratorAST objects, the same way it is done for FunctionDefinitionAST. Task-number: QTCREATORBUG-24894 Change-Id: I475fb08b1f14c63f3050d72dff200c1b08df5789 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Bind.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Bind.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp
index f30e285753..5313bd2d91 100644
--- a/src/libs/3rdparty/cplusplus/Bind.cpp
+++ b/src/libs/3rdparty/cplusplus/Bind.cpp
@@ -3308,10 +3308,20 @@ bool Bind::visit(FunctionDeclaratorAST *ast)
_type = this->trailingReturnType(ast->trailing_return_type, _type);
fun->setReturnType(_type);
+ // "static", "virtual" etc.
+ FullySpecifiedType declSpecifiers;
+ for (SpecifierListAST *it = ast->decl_specifier_list; it; it = it->next)
+ declSpecifiers = this->specifier(it->value, declSpecifiers);
+ setDeclSpecifiers(fun, declSpecifiers);
+
// int lparen_token = ast->lparen_token;
this->parameterDeclarationClause(ast->parameter_declaration_clause, ast->lparen_token, fun);
// int rparen_token = ast->rparen_token;
FullySpecifiedType type(fun);
+ type.setStatic(declSpecifiers.isStatic());
+ type.setVirtual(declSpecifiers.isVirtual());
+ type.setDeprecated(declSpecifiers.isDeprecated());
+ type.setUnavailable(declSpecifiers.isUnavailable());
for (SpecifierListAST *it = ast->cv_qualifier_list; it; it = it->next) {
type = this->specifier(it->value, type);
}