diff options
| author | Volodymyr Zibarov <gogan419@gmail.com> | 2020-05-14 23:07:05 +0300 |
|---|---|---|
| committer | Volodymyr Zibarov <gogan419@gmail.com> | 2020-05-29 12:39:28 +0000 |
| commit | 9ee693ee229d28bd618e8dd44bc6b12750d43a29 (patch) | |
| tree | 7a2a4dd6679fd3647228b5c39d1fc2724ff133a3 /src/libs/cplusplus/DeprecatedGenTemplateInstance.cpp | |
| parent | be97943372bc80d2440daa20cd658599d765b9a9 (diff) | |
C++: fix built-in code model to work with shared_ptr on MSVC 2017
These changes target Find Usages feature to work with shared_ptr.
Improve libs/3rdparty/cplusplus and plugins/cplusplus:
parse __declspec() attribute,
call to variadic function template without specified template arguments,
if constexpr,
c++11 attributes [[value]],
function templates with default parameters,
resolve order for function vs template with default parameter,
template operator->() with default arguments,
template specialization with numeric values,
find best partial specialization,
fix partial specialization for non-first specialized argument
Fixes: QTCREATORBUG-7866
Fixes: QTCREATORBUG-20781
Fixes: QTCREATORBUG-22857
Fixes: QTCREATORBUG-17825
Change-Id: I31a080f7729edfb2ee9650f1aff48daeba5a673b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Nikolai Kosjar <pinaceae.pinus@gmail.com>
Diffstat (limited to 'src/libs/cplusplus/DeprecatedGenTemplateInstance.cpp')
| -rw-r--r-- | src/libs/cplusplus/DeprecatedGenTemplateInstance.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/libs/cplusplus/DeprecatedGenTemplateInstance.cpp b/src/libs/cplusplus/DeprecatedGenTemplateInstance.cpp index d3653137b3d..11efc5bf96b 100644 --- a/src/libs/cplusplus/DeprecatedGenTemplateInstance.cpp +++ b/src/libs/cplusplus/DeprecatedGenTemplateInstance.cpp @@ -242,9 +242,9 @@ private: void visit(const TemplateNameId *name) override { - QVarLengthArray<FullySpecifiedType, 8> arguments(name->templateArgumentCount()); + QVarLengthArray<TemplateArgument, 8> arguments(name->templateArgumentCount()); for (int i = 0; i < name->templateArgumentCount(); ++i) { - FullySpecifiedType argTy = name->templateArgumentAt(i); + FullySpecifiedType argTy = name->templateArgumentAt(i).type(); arguments[i] = q->apply(argTy); } @@ -265,10 +265,10 @@ private: return id; } else if (const TemplateNameId *templId = name->asTemplateNameId()) { - QVarLengthArray<FullySpecifiedType, 8> arguments(templId->templateArgumentCount()); + QVarLengthArray<TemplateArgument, 8> arguments(templId->templateArgumentCount()); for (int templateArgIndex = 0; templateArgIndex < templId->templateArgumentCount(); ++templateArgIndex) { - FullySpecifiedType argTy = templId->templateArgumentAt(templateArgIndex); + FullySpecifiedType argTy = templId->templateArgumentAt(templateArgIndex).type(); arguments[templateArgIndex] = q->apply(argTy); } const Identifier *id = control()->identifier(templId->identifier()->chars(), @@ -404,7 +404,7 @@ FullySpecifiedType DeprecatedGenTemplateInstance::instantiate(const Name *classN DeprecatedGenTemplateInstance::Substitution subst; for (int i = 0; i < templId->templateArgumentCount(); ++i) { - FullySpecifiedType templArgTy = templId->templateArgumentAt(i); + FullySpecifiedType templArgTy = templId->templateArgumentAt(i).type(); if (i < templ->templateParameterCount()) { const Name *templArgName = templ->templateParameterAt(i)->name(); |
