From cf4ae8c63f7aa86a2e8da41307f31d0575f34668 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Mon, 6 Apr 2015 23:04:47 +0300
Subject: [PATCH] C++: Forward-declare NestedClassInstantiator

It is only used in LookupContext.cpp

Change-Id: I7b1b4a634fea8560102f2c17afcaacd2773de98a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
---
 src/libs/cplusplus/LookupContext.cpp | 22 ++++++++++++++++++++++
 src/libs/cplusplus/LookupContext.h   | 22 +---------------------
 2 files changed, 23 insertions(+), 21 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)
diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h
index 5858d80c95..291f957ac2 100644
--- a/src/libs/cplusplus/LookupContext.h
+++ b/src/libs/cplusplus/LookupContext.h
@@ -161,27 +161,7 @@ private:
 
     Class *_rootClass;
 
-    class 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;
-    };
+    class NestedClassInstantiator;
 
 public:
     const Name *_name; // For debug
-- 
GitLab