diff options
Diffstat (limited to 'src/shared/cplusplus')
-rw-r--r-- | src/shared/cplusplus/CPlusPlusForwardDeclarations.h | 2 | ||||
-rw-r--r-- | src/shared/cplusplus/CheckDeclaration.cpp | 2 | ||||
-rw-r--r-- | src/shared/cplusplus/FullySpecifiedType.cpp | 19 | ||||
-rw-r--r-- | src/shared/cplusplus/FullySpecifiedType.h | 2 |
4 files changed, 25 insertions, 0 deletions
diff --git a/src/shared/cplusplus/CPlusPlusForwardDeclarations.h b/src/shared/cplusplus/CPlusPlusForwardDeclarations.h index 9e570d2c1a..9616f51780 100644 --- a/src/shared/cplusplus/CPlusPlusForwardDeclarations.h +++ b/src/shared/cplusplus/CPlusPlusForwardDeclarations.h @@ -54,6 +54,8 @@ # if defined(CPLUSPLUS_BUILD_LIB) # define CPLUSPLUS_EXPORT Q_DECL_EXPORT +# elif defined(CPLUSPLUS_BUILD_STATIC_LIB) +# define CPLUSPLUS_EXPORT # else # define CPLUSPLUS_EXPORT Q_DECL_IMPORT # endif diff --git a/src/shared/cplusplus/CheckDeclaration.cpp b/src/shared/cplusplus/CheckDeclaration.cpp index 6a81784360..7e7d01d907 100644 --- a/src/shared/cplusplus/CheckDeclaration.cpp +++ b/src/shared/cplusplus/CheckDeclaration.cpp @@ -190,6 +190,7 @@ bool CheckDeclaration::visit(SimpleDeclarationAST *ast) fun->setScope(_scope); fun->setName(name); fun->setMethodKey(semantic()->currentMethodKey()); + fun->setVirtual(ty.isVirtual()); if (isQ_SIGNAL) fun->setMethodKey(Function::SignalMethod); else if (isQ_SLOT) @@ -281,6 +282,7 @@ bool CheckDeclaration::visit(FunctionDefinitionAST *ast) } Function *fun = funTy->asFunctionType(); + fun->setVirtual(ty.isVirtual()); fun->setStartOffset(tokenAt(ast->firstToken()).offset); fun->setEndOffset(tokenAt(ast->lastToken()).offset); if (ast->declarator) diff --git a/src/shared/cplusplus/FullySpecifiedType.cpp b/src/shared/cplusplus/FullySpecifiedType.cpp index 578c6c9b7d..a9063fda67 100644 --- a/src/shared/cplusplus/FullySpecifiedType.cpp +++ b/src/shared/cplusplus/FullySpecifiedType.cpp @@ -80,6 +80,10 @@ FullySpecifiedType FullySpecifiedType::qualifiedType() const ty.setExtern(false); ty.setMutable(false); ty.setTypedef(false); + + ty.setInline(false); + ty.setVirtual(false); + ty.setExplicit(false); return ty; } @@ -209,4 +213,19 @@ FullySpecifiedType FullySpecifiedType::simplified() const return *this; } +void FullySpecifiedType::copySpecifiers(const FullySpecifiedType &type) +{ + // class storage specifiers + f._isFriend = type.f._isFriend; + f._isRegister = type.f._isRegister; + f._isStatic = type.f._isStatic; + f._isExtern = type.f._isExtern; + f._isMutable = type.f._isMutable; + f._isTypedef = type.f._isTypedef; + + // function specifiers + f._isInline = type.f._isInline; + f._isVirtual = type.f._isVirtual; + f._isExplicit = type.f._isExplicit; +} diff --git a/src/shared/cplusplus/FullySpecifiedType.h b/src/shared/cplusplus/FullySpecifiedType.h index 6c9f83d914..5aea04dca1 100644 --- a/src/shared/cplusplus/FullySpecifiedType.h +++ b/src/shared/cplusplus/FullySpecifiedType.h @@ -121,6 +121,8 @@ public: FullySpecifiedType simplified() const; + void copySpecifiers(const FullySpecifiedType &type); + private: Type *_type; struct Flags { |