diff --git a/src/libs/3rdparty/cplusplus/Bind.cpp b/src/libs/3rdparty/cplusplus/Bind.cpp index ebc94828f3c..f30e2857533 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 79dd116df7f..a6a96192bcf 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(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 a5e833696c6..7313eab1bcc 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; diff --git a/tests/auto/cplusplus/findusages/tst_findusages.cpp b/tests/auto/cplusplus/findusages/tst_findusages.cpp index c65c7512f92..41d06919529 100644 --- a/tests/auto/cplusplus/findusages/tst_findusages.cpp +++ b/tests/auto/cplusplus/findusages/tst_findusages.cpp @@ -2221,7 +2221,6 @@ int main() QCOMPARE(find.usages().at(27).type, Usage::Type::WritableRef); QCOMPARE(find.usages().at(28).type, Usage::Type::Read); QCOMPARE(find.usages().at(29).type, Usage::Type::Read); - QEXPECT_FAIL(nullptr, "parser does not expose static specifier", Continue); QCOMPARE(find.usages().at(31).type, Usage::Type::Other); QEXPECT_FAIL(nullptr, "parser does not expose static specifier", Continue); QCOMPARE(find.usages().at(32).type, Usage::Type::Other);