summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/LookupContext.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2015-04-09 16:18:13 +0300
committerOrgad Shaneh <orgads@gmail.com>2015-04-23 08:19:01 +0000
commite1393c71abc9a426c08b1223c0394c5bcd9ae6cd (patch)
tree3ce140403020fb3e411621aa6e8a62afb66c473a /src/libs/cplusplus/LookupContext.cpp
parent8a84a7305e4405ab77a2b3c5e70007ef462d0ac8 (diff)
downloadqt-creator-e1393c71abc9a426c08b1223c0394c5bcd9ae6cd.tar.gz
C++: Always assign name to LookupScope
... except the global namespace and blocks Change-Id: I0696b4997c28b5105a000bae2a9a4fa1a56eb6d3 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r--src/libs/cplusplus/LookupContext.cpp29
1 files changed, 11 insertions, 18 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index b87634c743..69aa682d18 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -530,7 +530,7 @@ public:
TemplateNameId::Compare> TemplateNameIdTable;
typedef QHash<const AnonymousNameId *, LookupScopePrivate *> Anonymouses;
- LookupScopePrivate *allocateChild();
+ LookupScopePrivate *allocateChild(const Name *name);
void flush();
@@ -645,9 +645,9 @@ LookupScopePrivate::~LookupScopePrivate()
delete _scopeLookupCache;
}
-LookupScopePrivate *LookupScopePrivate::allocateChild()
+LookupScopePrivate *LookupScopePrivate::allocateChild(const Name *name)
{
- LookupScope *e = _factory->allocLookupScope(q);
+ LookupScope *e = _factory->allocLookupScope(q, name);
return e->d;
}
@@ -1125,9 +1125,7 @@ LookupScopePrivate *LookupScopePrivate::findOrCreateNestedAnonymousType(
if (cit != _anonymouses.constEnd()) {
return cit.value();
} else {
- LookupScopePrivate *newAnonymous = allocateChild();
- if (Q_UNLIKELY(debug))
- newAnonymous->_name = anonymousNameId;
+ LookupScopePrivate *newAnonymous = allocateChild(anonymousNameId);
_anonymouses[anonymousNameId] = newAnonymous;
return newAnonymous;
}
@@ -1171,9 +1169,7 @@ LookupScopePrivate *LookupScopePrivate::nestedType(
if (cit != reference->_specializations.end()) {
return cit->second;
} else {
- LookupScopePrivate *newSpecialization = reference->allocateChild();
- if (Q_UNLIKELY(debug))
- newSpecialization->_name = templId;
+ LookupScopePrivate *newSpecialization = reference->allocateChild(templId);
reference->_specializations[templId] = newSpecialization;
return newSpecialization;
}
@@ -1238,9 +1234,7 @@ LookupScopePrivate *LookupScopePrivate::nestedType(
// construct all instantiation data.
if (templId) {
_alreadyConsideredTemplates.insert(templId);
- LookupScopePrivate *instantiation = baseTemplateClassReference->allocateChild();
- if (Q_UNLIKELY(debug))
- instantiation->_name = templId;
+ LookupScopePrivate *instantiation = baseTemplateClassReference->allocateChild(templId);
while (!origin->_symbols.isEmpty() && origin->_symbols[0]->isBlock())
origin = origin->_parent;
@@ -1441,7 +1435,7 @@ void Instantiator::instantiate(LookupScopePrivate *lookupScope,
nestedLookupScope->flush();
if (isInstantiationNeeded(nestedLookupScope)) {
- nestedInstantiation = nestedLookupScope->allocateChild();
+ nestedInstantiation = nestedLookupScope->allocateChild(nestedName);
nestedInstantiation->_enums.append(nestedLookupScope->_enums);
nestedInstantiation->_usings.append(nestedLookupScope->_usings);
nestedInstantiation->_instantiationOrigin = nestedLookupScope;
@@ -1565,10 +1559,8 @@ LookupScope *LookupScopePrivate::findOrCreateType(
LookupScopePrivate *e = nestedType(name, origin);
if (! e) {
- e = allocateChild();
+ e = allocateChild(name);
e->_rootClass = clazz;
- if (Q_UNLIKELY(debug))
- e->_name = name;
_nestedScopes[name] = e;
}
@@ -1585,7 +1577,7 @@ CreateBindings::CreateBindings(Document::Ptr thisDocument, const Snapshot &snaps
, _control(QSharedPointer<Control>(new Control))
, _expandTemplates(false)
{
- _globalNamespace = allocLookupScope(/*parent = */ 0);
+ _globalNamespace = allocLookupScope(/*parent = */ 0, /*name = */ 0);
_currentLookupScope = _globalNamespace;
process(thisDocument);
@@ -1645,10 +1637,11 @@ void CreateBindings::process(Symbol *symbol)
_currentLookupScope->d->addTodo(symbol);
}
-LookupScope *CreateBindings::allocLookupScope(LookupScope *parent)
+LookupScope *CreateBindings::allocLookupScope(LookupScope *parent, const Name *name)
{
LookupScope *e = new LookupScope(this, parent);
e->d->_control = control();
+ e->d->_name = name;
_entities.append(e);
return e;
}