summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/LookupContext.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2015-04-06 23:04:47 +0300
committerOrgad Shaneh <orgads@gmail.com>2015-04-13 13:21:35 +0000
commitcf4ae8c63f7aa86a2e8da41307f31d0575f34668 (patch)
tree7283d9eca2e35c8a8aa1dee01d020707b62bdd54 /src/libs/cplusplus/LookupContext.cpp
parentafcf2afe5a6fc5ed8cc9102082b9ba29040749fc (diff)
downloadqt-creator-cf4ae8c63f7aa86a2e8da41307f31d0575f34668.tar.gz
C++: Forward-declare NestedClassInstantiator
It is only used in LookupContext.cpp Change-Id: I7b1b4a634fea8560102f2c17afcaacd2773de98a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r--src/libs/cplusplus/LookupContext.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index be1968733e..c70c90c15f 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -538,6 +538,28 @@ ClassOrNamespace *LookupContext::lookupParent(Symbol *symbol) const
return binding;
}
+class ClassOrNamespace::NestedClassInstantiator
+{
+public:
+ NestedClassInstantiator(CreateBindings *factory, Clone &cloner, Subst &subst)
+ : _factory(factory)
+ , _cloner(cloner)
+ , _subst(subst)
+ {}
+ void instantiate(ClassOrNamespace *enclosingTemplateClass,
+ ClassOrNamespace *enclosingTemplateClassInstantiation);
+private:
+ bool isInstantiateNestedClassNeeded(const QList<Symbol *> &symbols) const;
+ bool containsTemplateType(Declaration *declaration) const;
+ bool containsTemplateType(Function *function) const;
+ NamedType *findNamedType(Type *memberType) const;
+
+ QSet<ClassOrNamespace *> _alreadyConsideredNestedClassInstantiations;
+ CreateBindings *_factory;
+ Clone &_cloner;
+ Subst &_subst;
+};
+
ClassOrNamespace::ClassOrNamespace(CreateBindings *factory, ClassOrNamespace *parent)
: _factory(factory)
, _parent(parent)