aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus
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/3rdparty/cplusplus
parent837a707ec7bef2eaebffd5b7f4cbba5edbb4110c (diff)
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/3rdparty/cplusplus')
-rw-r--r--src/libs/3rdparty/cplusplus/Names.h1
-rw-r--r--src/libs/3rdparty/cplusplus/Templates.cpp5
2 files changed, 5 insertions, 1 deletions
diff --git a/src/libs/3rdparty/cplusplus/Names.h b/src/libs/3rdparty/cplusplus/Names.h
index 7e65e4c74c..5b915bdfb4 100644
--- a/src/libs/3rdparty/cplusplus/Names.h
+++ b/src/libs/3rdparty/cplusplus/Names.h
@@ -95,6 +95,7 @@ public:
FullySpecifiedType &type() { return _expressionTy; }
const NumericLiteral *numericLiteral() const { return _numericLiteral; }
+ void setNumericLiteral(const NumericLiteral *l) { _numericLiteral = l; }
bool operator==(const TemplateArgument &other) const
{
diff --git a/src/libs/3rdparty/cplusplus/Templates.cpp b/src/libs/3rdparty/cplusplus/Templates.cpp
index 92e5ab14fc..4a222e0363 100644
--- a/src/libs/3rdparty/cplusplus/Templates.cpp
+++ b/src/libs/3rdparty/cplusplus/Templates.cpp
@@ -440,8 +440,11 @@ void CloneName::visit(const AnonymousNameId *name)
void CloneName::visit(const TemplateNameId *name)
{
std::vector<TemplateArgument> args(name->templateArgumentCount());
- for (int i = 0; i < int(args.size()); ++i)
+ for (int i = 0; i < int(args.size()); ++i) {
args[i].type() = _clone->type(name->templateArgumentAt(i).type(), _subst);
+ args[i].setNumericLiteral(_clone->numericLiteral(
+ name->templateArgumentAt(i).numericLiteral()));
+ }
if (args.empty())
_name = _control->templateNameId(_clone->identifier(name->identifier()), name->isSpecialization());
else