diff --git a/src/libs/cplusplus/TypeOfExpression.cpp b/src/libs/cplusplus/TypeOfExpression.cpp
index 7ddb9e4bd33fc4ce1b243fd23f2d54fb501697e9..40e87760b931d00c7c493266650d23b67be8718f 100644
--- a/src/libs/cplusplus/TypeOfExpression.cpp
+++ b/src/libs/cplusplus/TypeOfExpression.cpp
@@ -105,7 +105,7 @@ Scope *TypeOfExpression::scope() const
     return m_scope;
 }
 
-const LookupContext &TypeOfExpression::lookupContext() const
+const LookupContext &TypeOfExpression::context() const
 {
     return m_lookupContext;
 }
diff --git a/src/libs/cplusplus/TypeOfExpression.h b/src/libs/cplusplus/TypeOfExpression.h
index 28bd1db08f37ffe1e1f36198c19d344647d0c692..9d32e57f8e05005f46aa05705b6cf48c917cf067 100644
--- a/src/libs/cplusplus/TypeOfExpression.h
+++ b/src/libs/cplusplus/TypeOfExpression.h
@@ -92,7 +92,7 @@ public:
     /**
      * Returns the lookup context of the last evaluated expression.
      */
-    const LookupContext &lookupContext() const;
+    const LookupContext &context() const;
     Scope *scope() const;
 
     ExpressionAST *expressionAST() const;
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 526aef780c881a9ff8d222889baffb6f6321534d..5dfe85579cf2fc4e71ef690dc8ea62af533f38dc 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -769,8 +769,6 @@ int CppCodeCompletion::startCompletionInternal(TextEditor::BaseTextEditor *edit,
     if (debug)
         qDebug() << "got:" << results.size() << "results";
 
-    LookupContext context = typeOfExpression.lookupContext();
-
     if (results.isEmpty()) {
         if (m_completionOperator == T_SIGNAL || m_completionOperator == T_SLOT) {
             if (! (expression.isEmpty() || expression == QLatin1String("this"))) {
@@ -781,8 +779,6 @@ int CppCodeCompletion::startCompletionInternal(TextEditor::BaseTextEditor *edit,
             if (results.isEmpty())
                 return -1;
 
-            context = typeOfExpression.lookupContext();
-
         } else if (m_completionOperator == T_LPAREN) {
             // Find the expression that precedes the current name
             int index = endOfExpression;
@@ -804,7 +800,7 @@ int CppCodeCompletion::startCompletionInternal(TextEditor::BaseTextEditor *edit,
             // If it's a class, add completions for the constructors
             foreach (const LookupItem &result, results) {
                 if (result.type()->isClassType()) {
-                    if (completeConstructorOrFunction(results, context, endOfExpression, true))
+                    if (completeConstructorOrFunction(results, endOfExpression, true))
                         return m_startPosition;
 
                     break;
@@ -821,28 +817,28 @@ int CppCodeCompletion::startCompletionInternal(TextEditor::BaseTextEditor *edit,
 
     switch (m_completionOperator) {
     case T_LPAREN:
-        if (completeConstructorOrFunction(results, context, endOfExpression, false))
+        if (completeConstructorOrFunction(results, endOfExpression, false))
             return m_startPosition;
         break;
 
     case T_DOT:
     case T_ARROW:
-        if (completeMember(results, context))
+        if (completeMember(results))
             return m_startPosition;
         break;
 
     case T_COLON_COLON:
-        if (completeScope(results, context))
+        if (completeScope(results))
             return m_startPosition;
         break;
 
     case T_SIGNAL:
-        if (completeSignal(results, context))
+        if (completeSignal(results))
             return m_startPosition;
         break;
 
     case T_SLOT:
-        if (completeSlot(results, context))
+        if (completeSlot(results))
             return m_startPosition;
         break;
 
@@ -877,9 +873,9 @@ int CppCodeCompletion::globalCompletion(Symbol *lastVisibleSymbol,
 }
 
 bool CppCodeCompletion::completeConstructorOrFunction(const QList<LookupItem> &results,
-                                                      const LookupContext &context,
                                                       int endOfExpression, bool toolTipOnly)
 {
+    const LookupContext &context = typeOfExpression.context();
     QList<Function *> functions;
 
     foreach (const LookupItem &result, results) {
@@ -1054,16 +1050,17 @@ bool CppCodeCompletion::completeConstructorOrFunction(const QList<LookupItem> &r
             m_functionArgumentWidget = new FunctionArgumentWidget;
 
         m_functionArgumentWidget->showFunctionHint(functions,
-                                                   typeOfExpression.lookupContext(),
+                                                   typeOfExpression.context(),
                                                    m_startPosition);
     }
 
     return false;
 }
 
-bool CppCodeCompletion::completeMember(const QList<LookupItem> &baseResults,
-                                       const LookupContext &context)
+bool CppCodeCompletion::completeMember(const QList<LookupItem> &baseResults)
 {
+    const LookupContext &context = typeOfExpression.context();
+
     if (debug)
         qDebug() << Q_FUNC_INFO << __LINE__;
 
@@ -1089,7 +1086,7 @@ bool CppCodeCompletion::completeMember(const QList<LookupItem> &baseResults,
         }
 
         if (binding)
-            completeClass(binding, context, /*static lookup = */ false);
+            completeClass(binding, /*static lookup = */ false);
 
         return ! m_completions.isEmpty();
     }
@@ -1102,9 +1099,9 @@ bool CppCodeCompletion::completeMember(const QList<LookupItem> &baseResults,
     return false;
 }
 
-bool CppCodeCompletion::completeScope(const QList<LookupItem> &results,
-                                      const LookupContext &context)
+bool CppCodeCompletion::completeScope(const QList<LookupItem> &results)
 {
+    const LookupContext &context = typeOfExpression.context();
     if (results.isEmpty())
         return false;
 
@@ -1114,19 +1111,19 @@ bool CppCodeCompletion::completeScope(const QList<LookupItem> &results,
 
         if (NamedType *namedTy = ty->asNamedType()) {
             if (ClassOrNamespace *b = context.lookupType(namedTy->name(), scope)) {
-                completeClass(b, context);
+                completeClass(b);
                 break;
             }
 
         } else if (Class *classTy = ty->asClassType()) {
             if (ClassOrNamespace *b = context.lookupType(classTy)) {
-                completeClass(b, context);
+                completeClass(b);
                 break;
             }
 
         } else if (Namespace *nsTy = ty->asNamespaceType()) {
             if (ClassOrNamespace *b = context.lookupType(nsTy)) {
-                completeNamespace(b, context);
+                completeNamespace(b);
                 break;
             }
 
@@ -1259,7 +1256,7 @@ bool CppCodeCompletion::completeInclude(const QTextCursor &cursor)
     return !m_completions.isEmpty();
 }
 
-void CppCodeCompletion::completeNamespace(ClassOrNamespace *b, const LookupContext &)
+void CppCodeCompletion::completeNamespace(ClassOrNamespace *b)
 {
     QSet<ClassOrNamespace *> bindingsVisited;
     QList<ClassOrNamespace *> bindingsToVisit;
@@ -1300,7 +1297,7 @@ void CppCodeCompletion::completeNamespace(ClassOrNamespace *b, const LookupConte
     }
 }
 
-void CppCodeCompletion::completeClass(ClassOrNamespace *b, const LookupContext &, bool staticLookup)
+void CppCodeCompletion::completeClass(ClassOrNamespace *b, bool staticLookup)
 {
     QSet<ClassOrNamespace *> bindingsVisited;
     QList<ClassOrNamespace *> bindingsToVisit;
@@ -1348,16 +1345,17 @@ void CppCodeCompletion::completeClass(ClassOrNamespace *b, const LookupContext &
 }
 
 bool CppCodeCompletion::completeQtMethod(const QList<LookupItem> &results,
-                                         const LookupContext &newContext,
                                          bool wantSignals)
 {
     if (results.isEmpty())
         return false;
 
-    DeprecatedLookupContext context(typeOfExpression.scope()->owner(),
-                                    newContext.expressionDocument(),
-                                    newContext.thisDocument(),
-                                    newContext.snapshot());
+    const LookupContext &context = typeOfExpression.context();
+
+    DeprecatedLookupContext depContext(typeOfExpression.scope()->owner(),
+                                       context.expressionDocument(),
+                                       context.thisDocument(),
+                                       context.snapshot());
 
     ConvertToCompletionItem toCompletionItem(this);
     Overview o;
@@ -1378,7 +1376,7 @@ bool CppCodeCompletion::completeQtMethod(const QList<LookupItem> &results,
         if (! namedTy) // not a class name.
             continue;
 
-        ClassOrNamespace *b = newContext.lookupType(namedTy->name(), p.scope());
+        ClassOrNamespace *b = context.lookupType(namedTy->name(), p.scope());
         if (! b)
             continue;
 
@@ -1398,8 +1396,8 @@ bool CppCodeCompletion::completeQtMethod(const QList<LookupItem> &results,
             continue;
 
         QList<Scope *> todo;
-        const QList<Scope *> visibleScopes = context.visibleScopes(p);
-        context.expand(klass->members(), visibleScopes, &todo);
+        const QList<Scope *> visibleScopes = depContext.visibleScopes(p);
+        depContext.expand(klass->members(), visibleScopes, &todo);
 
         foreach (Scope *scope, todo) {
             if (! scope->isClassScope())
diff --git a/src/plugins/cpptools/cppcodecompletion.h b/src/plugins/cpptools/cppcodecompletion.h
index 6337ed5c9f2f3cd63418ff1ed17a5c6ec3cb6514..b168c54947e315e3cf3b66bee6769e7fe5e5dcfb 100644
--- a/src/plugins/cpptools/cppcodecompletion.h
+++ b/src/plugins/cpptools/cppcodecompletion.h
@@ -52,8 +52,6 @@ class BaseTextEditor;
 
 namespace CPlusPlus {
 class LookupItem;
-class LookupContext;
-class DeprecatedLookupContext;
 class ClassOrNamespace;
 }
 
@@ -101,36 +99,27 @@ private:
                          CPlusPlus::Document::Ptr thisDocument,
                          const CPlusPlus::Snapshot &snapshot);
 
-    bool completeConstructorOrFunction(const QList<CPlusPlus::LookupItem> &,
-                                       const CPlusPlus::LookupContext &,
+    bool completeConstructorOrFunction(const QList<CPlusPlus::LookupItem> &results,
                                        int endOfExpression, bool toolTipOnly);
 
-    bool completeMember(const QList<CPlusPlus::LookupItem> &,
-                        const CPlusPlus::LookupContext &context);
+    bool completeMember(const QList<CPlusPlus::LookupItem> &results);
+    bool completeScope(const QList<CPlusPlus::LookupItem> &results);
 
-    bool completeScope(const QList<CPlusPlus::LookupItem> &,
-                       const CPlusPlus::LookupContext &context);
-
-    void completeNamespace(CPlusPlus::ClassOrNamespace *binding,
-                           const CPlusPlus::LookupContext &context);
+    void completeNamespace(CPlusPlus::ClassOrNamespace *binding);
 
     void completeClass(CPlusPlus::ClassOrNamespace *b,
-                       const CPlusPlus::LookupContext &context,
                        bool staticLookup = true);
 
     bool completeConstructors(CPlusPlus::Class *klass);
 
     bool completeQtMethod(const QList<CPlusPlus::LookupItem> &results,
-                          const CPlusPlus::LookupContext &context,
                           bool wantSignals);
 
-    bool completeSignal(const QList<CPlusPlus::LookupItem> &results,
-                        const CPlusPlus::LookupContext &context)
-    { return completeQtMethod(results, context, true); }
+    bool completeSignal(const QList<CPlusPlus::LookupItem> &results)
+    { return completeQtMethod(results, true); }
 
-    bool completeSlot(const QList<CPlusPlus::LookupItem> &results,
-                      const CPlusPlus::LookupContext &context)
-    { return completeQtMethod(results, context, false); }
+    bool completeSlot(const QList<CPlusPlus::LookupItem> &results)
+    { return completeQtMethod(results, false); }
 
     int findStartOfName(int pos = -1) const;