diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-11-06 14:15:18 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-11-09 10:55:38 +0000 |
commit | 42d34015e258972be8f43cadea598b39317872bf (patch) | |
tree | e249810914add8101543e276789e04686929527c /src/libs/3rdparty/cplusplus | |
parent | 1e2939916e88fc81d262f279f4a5c09ef298d39e (diff) |
CPlusPlus: Provide information about the "static" specifier
... to the function type.
This fixes the issue for function *definitions*. For function
*declarations*, we need to amend the parser.
Task-number: QTCREATORBUG-24894
Change-Id: I02043d8b974c2c64dcd739c7e05ce44fd277b5d3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs/3rdparty/cplusplus')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Bind.cpp | 2 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/Symbols.cpp | 1 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/Symbols.h | 4 |
3 files changed, 7 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp index ebc94828f3..f30e285753 100644 --- a/src/libs/3rdparty/cplusplus/Bind.cpp +++ b/src/libs/3rdparty/cplusplus/Bind.cpp @@ -135,6 +135,8 @@ void Bind::setDeclSpecifiers(Symbol *symbol, const FullySpecifiedType &declSpeci if (Function *funTy = symbol->asFunction()) { if (declSpecifiers.isVirtual()) funTy->setVirtual(true); + if (declSpecifiers.isStatic()) + funTy->setStatic(true); } if (declSpecifiers.isDeprecated()) diff --git a/src/libs/3rdparty/cplusplus/Symbols.cpp b/src/libs/3rdparty/cplusplus/Symbols.cpp index 79dd116df7..a6a96192bc 100644 --- a/src/libs/3rdparty/cplusplus/Symbols.cpp +++ b/src/libs/3rdparty/cplusplus/Symbols.cpp @@ -405,6 +405,7 @@ FullySpecifiedType Function::type() const FullySpecifiedType ty(const_cast<Function *>(this)); ty.setConst(isConst()); ty.setVolatile(isVolatile()); + ty.setStatic(isStatic()); return ty; } diff --git a/src/libs/3rdparty/cplusplus/Symbols.h b/src/libs/3rdparty/cplusplus/Symbols.h index a5e833696c..7313eab1bc 100644 --- a/src/libs/3rdparty/cplusplus/Symbols.h +++ b/src/libs/3rdparty/cplusplus/Symbols.h @@ -352,6 +352,9 @@ public: bool isConst() const; void setConst(bool isConst); + bool isStatic() const { return f._isStatic; } + void setStatic(bool isStatic) { f._isStatic = isStatic; } + bool isVolatile() const; void setVolatile(bool isVolatile); @@ -399,6 +402,7 @@ private: unsigned _isVirtual: 1; unsigned _isOverride: 1; unsigned _isFinal: 1; + unsigned _isStatic: 1; unsigned _isVariadic: 1; unsigned _isVariadicTemplate: 1; unsigned _isPureVirtual: 1; |