CppEditor: Fix "insert definition" for templates with value parameters

Fixes: QTCREATORBUG-26113
Change-Id: I2d2a1c1bdcffd67072bbda99dabbbfbfafe115c5
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2021-08-16 17:52:02 +02:00
parent 837a707ec7
commit d7717f1eca
5 changed files with 36 additions and 3 deletions

View File

@@ -274,8 +274,15 @@ public:
void visit(const TemplateNameId *name) override
{
QVarLengthArray<TemplateArgument, 8> args(name->templateArgumentCount());
for (int i = 0; i < name->templateArgumentCount(); ++i)
args[i] = rewrite->rewriteType(name->templateArgumentAt(i).type());
for (int i = 0; i < name->templateArgumentCount(); ++i) {
const TemplateArgument &oldArg = name->templateArgumentAt(i);
args[i] = rewrite->rewriteType(oldArg.type());
const NumericLiteral * const number = oldArg.numericLiteral();
if (number) {
args[i].setNumericLiteral(control()->numericLiteral(number->chars(),
number->size()));
}
}
temps.append(control()->templateNameId(identifier(name->identifier()), name->isSpecialization(),
args.data(), args.size()));
}