diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2014-08-27 22:48:31 +0300 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2014-08-28 16:02:07 +0200 |
commit | 29532a69712fa02de8aa5704ff75c9825dec81a2 (patch) | |
tree | 576ecd2db0fd538347eb40c9e84c9da87d08780a /src/libs/cplusplus/LookupContext.cpp | |
parent | f08ff20e945b9c134de723017ec9eb7386c384df (diff) | |
download | qt-creator-29532a69712fa02de8aa5704ff75c9825dec81a2.tar.gz |
C++: refactoring: extract finding anonymous as nested type
Change-Id: I73d50d7b51e6a4e9d2b20df487f871793a6a6889
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 7938b13f28..092e48e86d 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -994,6 +994,22 @@ ClassOrNamespace *ClassOrNamespace::findSpecialization(const TemplateNameId *tem return 0; } +ClassOrNamespace *ClassOrNamespace::findOrCreateNestedAnonymousType( + const AnonymousNameId *anonymousNameId) +{ + QHash<const AnonymousNameId *, ClassOrNamespace *>::const_iterator cit + = _anonymouses.find(anonymousNameId); + if (cit != _anonymouses.end()) { + return cit.value(); + } else { + ClassOrNamespace *newAnonymous = _factory->allocClassOrNamespace(this); + if (Q_UNLIKELY(debug)) + newAnonymous->_name = anonymousNameId; + _anonymouses[anonymousNameId] = newAnonymous; + return newAnonymous; + } +} + ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespace *origin) { Q_ASSERT(name != 0); @@ -1001,20 +1017,8 @@ ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespac const_cast<ClassOrNamespace *>(this)->flush(); - const AnonymousNameId *anonymousNameId = name->asAnonymousNameId(); - if (anonymousNameId) { - QHash<const AnonymousNameId *, ClassOrNamespace *>::const_iterator cit - = _anonymouses.find(anonymousNameId); - if (cit != _anonymouses.end()) { - return cit.value(); - } else { - ClassOrNamespace *newAnonymous = _factory->allocClassOrNamespace(this); - if (Q_UNLIKELY(debug)) - newAnonymous->_name = anonymousNameId; - _anonymouses[anonymousNameId] = newAnonymous; - return newAnonymous; - } - } + if (const AnonymousNameId *anonymousNameId = name->asAnonymousNameId()) + return findOrCreateNestedAnonymousType(anonymousNameId); Table::const_iterator it = _classOrNamespaces.find(name); if (it == _classOrNamespaces.end()) |