diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2021-08-16 17:52:02 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2021-08-17 08:35:35 +0000 |
commit | d7717f1ecad45e59304634d7fdbff22681eda075 (patch) | |
tree | f4931e402891670893bdc785523b01eb6542e87d /src/libs/3rdparty/cplusplus | |
parent | 837a707ec7bef2eaebffd5b7f4cbba5edbb4110c (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.h | 1 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/Templates.cpp | 5 |
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 |