aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-11-06 14:15:18 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2020-11-09 10:55:38 +0000
commit42d34015e258972be8f43cadea598b39317872bf (patch)
treee249810914add8101543e276789e04686929527c /src/libs/3rdparty/cplusplus
parent1e2939916e88fc81d262f279f4a5c09ef298d39e (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.cpp2
-rw-r--r--src/libs/3rdparty/cplusplus/Symbols.cpp1
-rw-r--r--src/libs/3rdparty/cplusplus/Symbols.h4
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;