Skip to content

Commit 051d222

Browse files
committed
Fix QList::swap missing the template argument in the argument type
1 parent 0eda5bf commit 051d222

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

generator/parser/binder.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,18 @@ void Binder::visitFunctionDefinition(FunctionDefinitionAST *node)
471471
foreach (DeclaratorCompiler::Parameter p, decl_cc.parameters())
472472
{
473473
ArgumentModelItem arg = model()->create<ArgumentModelItem>();
474+
475+
if (_M_current_class && _M_current_class->isTemplateClass())
476+
{
477+
QStringList qualifiedName = p.type.qualifiedName();
478+
if (qualifiedName.size() == 1 && !qualifiedName.last().contains('<') &&
479+
qualifiedName.last() == _M_current_class->name().split('<').first())
480+
{
481+
// Fix: add template arguments if the argument type is the current class
482+
// name without template arguments
483+
p.type.setQualifiedName(QStringList(_M_current_class->name()));
484+
}
485+
}
474486
arg->setType(qualifyType(p.type, functionScope->qualifiedName()));
475487
arg->setName(p.name);
476488
arg->setDefaultValue(p.defaultValue);

generator/parser/codemodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ class _ClassModelItem: public _ScopeModelItem
355355

356356
TemplateParameterList templateParameters() const;
357357
void setTemplateParameters(const TemplateParameterList &templateParameters);
358+
bool isTemplateClass() const { return _M_templateParameters.size(); }
358359

359360
bool extendsClass(const QString &name) const;
360361

0 commit comments

Comments
 (0)