diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2013-05-09 00:34:28 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-05-10 11:16:04 +0200 |
commit | 5dbcb974b02e788f9c213a917105a4e6b6593281 (patch) | |
tree | 7942c2746cf699f40787a69f7cc89d8f51b02357 /src/libs/3rdparty | |
parent | cd8cd4fdb11e54d241748ed72f480aaf641d1161 (diff) | |
download | qt-creator-5dbcb974b02e788f9c213a917105a4e6b6593281.tar.gz |
C++: added missing cloning of AnonymousNameId
When instantiate a template with anonymous class/struct/union
AnonymousNameId has to be cloned.
Task-number: QTCREATORBUG-9227
Change-Id: Iedca5e41589e68a94a35cd4387241052c70c50df
Reviewed-by: Sergey Shambir <sergey.shambir.auto@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/libs/3rdparty')
-rw-r--r-- | src/libs/3rdparty/cplusplus/Templates.cpp | 5 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/Templates.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/Templates.cpp b/src/libs/3rdparty/cplusplus/Templates.cpp index b813600143..5edef37c7f 100644 --- a/src/libs/3rdparty/cplusplus/Templates.cpp +++ b/src/libs/3rdparty/cplusplus/Templates.cpp @@ -408,6 +408,11 @@ void CloneName::visit(const Identifier *name) _name = _control->identifier(name->chars(), name->size()); } +void CloneName::visit(const AnonymousNameId *name) +{ + _name = _control->anonymousNameId(name->classTokenIndex()); +} + void CloneName::visit(const TemplateNameId *name) { std::vector<FullySpecifiedType> args(name->templateArgumentCount()); diff --git a/src/libs/3rdparty/cplusplus/Templates.h b/src/libs/3rdparty/cplusplus/Templates.h index 2784f02d7f..f2b5b9a367 100644 --- a/src/libs/3rdparty/cplusplus/Templates.h +++ b/src/libs/3rdparty/cplusplus/Templates.h @@ -109,6 +109,7 @@ public: protected: virtual void visit(const Identifier *name); + virtual void visit(const AnonymousNameId *name); virtual void visit(const TemplateNameId *name); virtual void visit(const DestructorNameId *name); virtual void visit(const OperatorNameId *name); |