aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/Symbols.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Symbols.cpp')
-rw-r--r--src/libs/3rdparty/cplusplus/Symbols.cpp11
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;