diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-11-06 14:28:12 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-11-11 15:41:27 +0000 |
commit | 59f8bd47023227afc5d8acbdbaf18972395c1c73 (patch) | |
tree | 7d511b87f67f47e6ca2f723dea9bda00ab1ea8ac /src/libs/3rdparty/cplusplus/Bind.cpp | |
parent | 30c1652d109e20a3efcaaef61be108c91426d6fa (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.cpp | 10 |
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); } |