diff options
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Symbols.cpp')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Symbols.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libs/3rdparty/cplusplus/Symbols.cpp b/src/libs/3rdparty/cplusplus/Symbols.cpp index aba1be3494..22f355dce4 100644 --- a/src/libs/3rdparty/cplusplus/Symbols.cpp +++ b/src/libs/3rdparty/cplusplus/Symbols.cpp @@ -191,7 +191,7 @@ Declaration::Declaration(Clone *clone, Subst *subst, Declaration *original) if (const TemplateNameId * templateNameId = namedType->name()->asTemplateNameId()) { if (templateNameId->templateArgumentCount()) { - newType = clone->type(templateNameId->templateArgumentAt(0), nullptr); + newType = clone->type(templateNameId->templateArgumentAt(0).type(), nullptr); newType = FullySpecifiedType(clone->control()->pointerType(newType)); } } @@ -469,6 +469,12 @@ bool Function::isVariadic() const void Function::setVariadic(bool isVariadic) { f._isVariadic = isVariadic; } +bool Function::isVariadicTemplate() const +{ return f._isVariadicTemplate; } + +void Function::setVariadicTemplate(bool isVariadicTemplate) +{ f._isVariadicTemplate = isVariadicTemplate; } + bool Function::isConst() const { return f._isConst; } @@ -523,6 +529,9 @@ bool Function::maybeValidPrototype(int actualArgumentCount) const break; } + if (isVariadicTemplate()) + --minNumberArguments; + if (actualArgumentCount < minNumberArguments) { // not enough arguments. return false; |