forked from qt-creator/qt-creator
C++: cleanup setting the bindings in the lookup context class.
Change-Id: I114d7b1116ee5e345675a332c30312614c0faf5f Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
@@ -160,16 +160,19 @@ LookupContext::LookupContext(Document::Ptr thisDocument,
|
||||
: _expressionDocument(Document::create(QLatin1String("<LookupContext>")))
|
||||
, _thisDocument(thisDocument)
|
||||
, _snapshot(snapshot)
|
||||
, _bindings(new CreateBindings(thisDocument, snapshot))
|
||||
, m_expandTemplates(false)
|
||||
{
|
||||
}
|
||||
|
||||
LookupContext::LookupContext(Document::Ptr expressionDocument,
|
||||
Document::Ptr thisDocument,
|
||||
const Snapshot &snapshot)
|
||||
const Snapshot &snapshot,
|
||||
QSharedPointer<CreateBindings> bindings)
|
||||
: _expressionDocument(expressionDocument)
|
||||
, _thisDocument(thisDocument)
|
||||
, _snapshot(snapshot)
|
||||
, _bindings(bindings)
|
||||
, m_expandTemplates(false)
|
||||
{
|
||||
}
|
||||
@@ -277,21 +280,6 @@ QList<LookupItem> LookupContext::lookupByUsing(const Name *name, Scope *scope) c
|
||||
}
|
||||
|
||||
|
||||
QSharedPointer<CreateBindings> LookupContext::bindings() const
|
||||
{
|
||||
if (! _bindings) {
|
||||
_bindings = QSharedPointer<CreateBindings>(new CreateBindings(_thisDocument, _snapshot));
|
||||
_bindings->setExpandTemplates(m_expandTemplates);
|
||||
}
|
||||
|
||||
return _bindings;
|
||||
}
|
||||
|
||||
void LookupContext::setBindings(QSharedPointer<CreateBindings> bindings)
|
||||
{
|
||||
_bindings = bindings;
|
||||
}
|
||||
|
||||
Document::Ptr LookupContext::expressionDocument() const
|
||||
{ return _expressionDocument; }
|
||||
|
||||
@@ -533,6 +521,7 @@ ClassOrNamespace::ClassOrNamespace(CreateBindings *factory, ClassOrNamespace *pa
|
||||
, _name(0)
|
||||
#endif // DEBUG_LOOKUP
|
||||
{
|
||||
Q_ASSERT(factory);
|
||||
}
|
||||
|
||||
ClassOrNamespace::~ClassOrNamespace()
|
||||
|
||||
@@ -63,8 +63,11 @@ class CreateBindings;
|
||||
|
||||
class CPLUSPLUS_EXPORT ClassOrNamespace
|
||||
{
|
||||
public:
|
||||
Q_DISABLE_COPY(ClassOrNamespace)
|
||||
|
||||
ClassOrNamespace(CreateBindings *factory, ClassOrNamespace *parent);
|
||||
|
||||
public:
|
||||
~ClassOrNamespace();
|
||||
|
||||
const TemplateNameId *templateId() const;
|
||||
@@ -286,7 +289,8 @@ public:
|
||||
|
||||
LookupContext(Document::Ptr expressionDocument,
|
||||
Document::Ptr thisDocument,
|
||||
const Snapshot &snapshot);
|
||||
const Snapshot &snapshot,
|
||||
QSharedPointer<CreateBindings> bindings = QSharedPointer<CreateBindings>());
|
||||
|
||||
LookupContext(const LookupContext &other);
|
||||
LookupContext &operator = (const LookupContext &other);
|
||||
@@ -308,10 +312,8 @@ public:
|
||||
ClassOrNamespace *lookupParent(Symbol *symbol) const;
|
||||
|
||||
/// \internal
|
||||
QSharedPointer<CreateBindings> bindings() const;
|
||||
|
||||
/// \internal
|
||||
void setBindings(QSharedPointer<CreateBindings> bindings);
|
||||
QSharedPointer<CreateBindings> bindings() const
|
||||
{ return _bindings; }
|
||||
|
||||
static QList<const Name *> fullyQualifiedName(Symbol *symbol);
|
||||
static QList<const Name *> path(Symbol *symbol);
|
||||
@@ -338,7 +340,7 @@ private:
|
||||
Snapshot _snapshot;
|
||||
|
||||
// Bindings
|
||||
mutable QSharedPointer<CreateBindings> _bindings;
|
||||
QSharedPointer<CreateBindings> _bindings;
|
||||
|
||||
bool m_expandTemplates;
|
||||
};
|
||||
|
||||
@@ -1150,7 +1150,7 @@ ClassOrNamespace *ResolveExpression::findClassForTemplateParameterInExpressionSc
|
||||
ClassOrNamespace *resultBinding,
|
||||
const FullySpecifiedType &ty) const
|
||||
{
|
||||
if (resultBinding && resultBinding->instantiationOrigin()) {
|
||||
if (resultBinding) {
|
||||
if (ClassOrNamespace *origin = resultBinding->instantiationOrigin()) {
|
||||
foreach (Symbol *originSymbol, origin->symbols()) {
|
||||
if (Scope *originScope = originSymbol->asScope()) {
|
||||
|
||||
@@ -48,17 +48,6 @@ TypeOfExpression::TypeOfExpression():
|
||||
{
|
||||
}
|
||||
|
||||
void TypeOfExpression::reset()
|
||||
{
|
||||
m_thisDocument.clear();
|
||||
m_snapshot = Snapshot();
|
||||
m_ast = 0;
|
||||
m_scope = 0;
|
||||
m_lookupContext = LookupContext();
|
||||
m_bindings.clear();
|
||||
m_environment.clear();
|
||||
}
|
||||
|
||||
void TypeOfExpression::init(Document::Ptr thisDocument, const Snapshot &snapshot,
|
||||
QSharedPointer<CreateBindings> bindings,
|
||||
const QSet<const Declaration *> &autoDeclarationsBeingResolved)
|
||||
@@ -68,7 +57,12 @@ void TypeOfExpression::init(Document::Ptr thisDocument, const Snapshot &snapshot
|
||||
m_ast = 0;
|
||||
m_scope = 0;
|
||||
m_lookupContext = LookupContext();
|
||||
|
||||
Q_ASSERT(m_bindings.isNull());
|
||||
m_bindings = bindings;
|
||||
if (m_bindings.isNull())
|
||||
m_bindings.reset(new CreateBindings(thisDocument, snapshot));
|
||||
|
||||
m_environment.clear();
|
||||
m_autoDeclarationsBeingResolved = autoDeclarationsBeingResolved;
|
||||
}
|
||||
@@ -111,17 +105,12 @@ QList<LookupItem> TypeOfExpression::operator()(ExpressionAST *expression,
|
||||
m_scope = scope;
|
||||
|
||||
m_documents.append(document);
|
||||
m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot);
|
||||
m_lookupContext.setBindings(m_bindings);
|
||||
m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot, m_bindings);
|
||||
Q_ASSERT(!m_bindings.isNull());
|
||||
m_lookupContext.setExpandTemplates(m_expandTemplates);
|
||||
|
||||
ResolveExpression resolve(m_lookupContext, m_autoDeclarationsBeingResolved);
|
||||
const QList<LookupItem> items = resolve(m_ast, scope);
|
||||
|
||||
if (! m_bindings)
|
||||
m_lookupContext = resolve.context();
|
||||
|
||||
return items;
|
||||
return resolve(m_ast, scope);
|
||||
}
|
||||
|
||||
QList<LookupItem> TypeOfExpression::reference(ExpressionAST *expression,
|
||||
@@ -133,17 +122,12 @@ QList<LookupItem> TypeOfExpression::reference(ExpressionAST *expression,
|
||||
m_scope = scope;
|
||||
|
||||
m_documents.append(document);
|
||||
m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot);
|
||||
m_lookupContext.setBindings(m_bindings);
|
||||
m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot, m_bindings);
|
||||
Q_ASSERT(!m_bindings.isNull());
|
||||
m_lookupContext.setExpandTemplates(m_expandTemplates);
|
||||
|
||||
ResolveExpression resolve(m_lookupContext, m_autoDeclarationsBeingResolved);
|
||||
const QList<LookupItem> items = resolve.reference(m_ast, scope);
|
||||
|
||||
if (! m_bindings)
|
||||
m_lookupContext = resolve.context();
|
||||
|
||||
return items;
|
||||
return resolve.reference(m_ast, scope);
|
||||
}
|
||||
|
||||
QByteArray TypeOfExpression::preprocess(const QByteArray &utf8code) const
|
||||
|
||||
@@ -65,8 +65,6 @@ public:
|
||||
const QSet<const Declaration *> &autoDeclarationsBeingResolved
|
||||
= QSet<const Declaration *>());
|
||||
|
||||
void reset();
|
||||
|
||||
enum PreprocessMode {
|
||||
NoPreprocess,
|
||||
Preprocess
|
||||
|
||||
Reference in New Issue
Block a user