summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/CppRewriter.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2021-08-16 17:52:02 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2021-08-17 08:35:35 +0000
commitd7717f1ecad45e59304634d7fdbff22681eda075 (patch)
treef4931e402891670893bdc785523b01eb6542e87d /src/libs/cplusplus/CppRewriter.cpp
parent837a707ec7bef2eaebffd5b7f4cbba5edbb4110c (diff)
downloadqt-creator-d7717f1ecad45e59304634d7fdbff22681eda075.tar.gz
CppEditor: Fix "insert definition" for templates with value parameters
Fixes: QTCREATORBUG-26113 Change-Id: I2d2a1c1bdcffd67072bbda99dabbbfbfafe115c5 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs/cplusplus/CppRewriter.cpp')
-rw-r--r--src/libs/cplusplus/CppRewriter.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libs/cplusplus/CppRewriter.cpp b/src/libs/cplusplus/CppRewriter.cpp
index 174004fbff..ac5b763aec 100644
--- a/src/libs/cplusplus/CppRewriter.cpp
+++ b/src/libs/cplusplus/CppRewriter.cpp
@@ -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()));
}