summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/LookupContext.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2014-08-27 22:48:31 +0300
committerNikolai Kosjar <nikolai.kosjar@digia.com>2014-08-28 16:02:07 +0200
commit29532a69712fa02de8aa5704ff75c9825dec81a2 (patch)
tree576ecd2db0fd538347eb40c9e84c9da87d08780a /src/libs/cplusplus/LookupContext.cpp
parentf08ff20e945b9c134de723017ec9eb7386c384df (diff)
downloadqt-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.cpp32
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())