From 36ed6bce1ddd079056de64d1507bc944e7723930 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Fri, 1 Jul 2011 13:51:53 +0200
Subject: [PATCH] QmlJS: Move Context to its own file.

Change-Id: I91331b7039e27e2f57cc19b985c8ed86c955ec9e
Reviewed-on: http://codereview.qt.nokia.com/1042
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
---
 src/libs/qmljs/qmljs-lib.pri                  |   6 +-
 src/libs/qmljs/qmljscheck.cpp                 |   2 +-
 src/libs/qmljs/qmljscheck.h                   |   2 +-
 src/libs/qmljs/qmljscontext.cpp               | 178 ++++++++++++++++++
 src/libs/qmljs/qmljscontext.h                 |  90 +++++++++
 src/libs/qmljs/qmljsevaluate.cpp              |   2 +-
 src/libs/qmljs/qmljsinterpreter.cpp           | 141 +-------------
 src/libs/qmljs/qmljsinterpreter.h             |  40 +---
 src/libs/qmljs/qmljslookupcontext.cpp         |   2 +-
 src/libs/qmljs/qmljslookupcontext.h           |   2 +-
 src/libs/qmljs/qmljsscopebuilder.cpp          |   2 +-
 .../designercore/metainfo/nodemetainfo.cpp    |   2 +-
 .../designercore/model/texttomodelmerger.cpp  |   2 +-
 .../qmljseditor/qmljscompletionassist.cpp     |   1 +
 src/plugins/qmljseditor/qmljseditor.h         |   2 +-
 .../qmljseditor/qmljsfindreferences.cpp       |   1 +
 src/plugins/qmljseditor/qmljshoverhandler.cpp |   2 +-
 .../qmljseditor/qmljssemantichighlighter.cpp  |   2 +-
 src/plugins/qmljseditor/qmloutlinemodel.cpp   |   3 +-
 src/plugins/qmljseditor/qmltaskmanager.cpp    |   2 +-
 src/plugins/qmljseditor/quicktoolbar.cpp      |   2 +-
 src/plugins/qmljstools/qmljslocatordata.cpp   |   2 +-
 src/plugins/qmljstools/qmljsmodelmanager.cpp  |   2 +-
 23 files changed, 292 insertions(+), 198 deletions(-)
 create mode 100644 src/libs/qmljs/qmljscontext.cpp
 create mode 100644 src/libs/qmljs/qmljscontext.h

diff --git a/src/libs/qmljs/qmljs-lib.pri b/src/libs/qmljs/qmljs-lib.pri
index 2bad6737904..47488948a0b 100644
--- a/src/libs/qmljs/qmljs-lib.pri
+++ b/src/libs/qmljs/qmljs-lib.pri
@@ -29,7 +29,8 @@ HEADERS += \
     $$PWD/qmljsdelta.h \
     $$PWD/qmljstypedescriptionreader.h \
     $$PWD/qmljsscopeastpath.h \
-    $$PWD/qmljsvalueowner.h
+    $$PWD/qmljsvalueowner.h \
+    $$PWD/qmljscontext.h
 
 SOURCES += \
     $$PWD/qmljsbind.cpp \
@@ -50,7 +51,8 @@ SOURCES += \
     $$PWD/qmljsdelta.cpp \
     $$PWD/qmljstypedescriptionreader.cpp \
     $$PWD/qmljsscopeastpath.cpp \
-    $$PWD/qmljsvalueowner.cpp
+    $$PWD/qmljsvalueowner.cpp \
+    $$PWD/qmljscontext.cpp
 
 RESOURCES += \
     $$PWD/qmljs.qrc
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index b8146540209..68849e1adc4 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -32,7 +32,7 @@
 
 #include "qmljscheck.h"
 #include "qmljsbind.h"
-#include "qmljsinterpreter.h"
+#include "qmljscontext.h"
 #include "qmljsevaluate.h"
 #include "parser/qmljsast_p.h"
 
diff --git a/src/libs/qmljs/qmljscheck.h b/src/libs/qmljs/qmljscheck.h
index 39aa9a5160b..5fb2c8bcce2 100644
--- a/src/libs/qmljs/qmljscheck.h
+++ b/src/libs/qmljs/qmljscheck.h
@@ -34,7 +34,7 @@
 #define QMLJSCHECK_H
 
 #include <qmljs/qmljsdocument.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljsscopebuilder.h>
 #include <qmljs/parser/qmljsastvisitor_p.h>
 
diff --git a/src/libs/qmljs/qmljscontext.cpp b/src/libs/qmljs/qmljscontext.cpp
new file mode 100644
index 00000000000..ab914cbfa9e
--- /dev/null
+++ b/src/libs/qmljs/qmljscontext.cpp
@@ -0,0 +1,178 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (info@qt.nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at info@qt.nokia.com.
+**
+**************************************************************************/
+
+#include "qmljscontext.h"
+
+#include "parser/qmljsast_p.h"
+
+using namespace QmlJS;
+using namespace QmlJS::AST;
+using namespace QmlJS::Interpreter;
+
+Context::Context(const QmlJS::Snapshot &snapshot, ValueOwner *valueOwner, const ImportsPerDocument &imports)
+    : _snapshot(snapshot),
+      _valueOwner(valueOwner),
+      _imports(imports),
+      _qmlScopeObjectIndex(-1),
+      _qmlScopeObjectSet(false)
+{
+}
+
+Context::~Context()
+{
+}
+
+// the values is only guaranteed to live as long as the context
+ValueOwner *Context::valueOwner() const
+{
+    return _valueOwner.data();
+}
+
+QmlJS::Snapshot Context::snapshot() const
+{
+    return _snapshot;
+}
+
+const ScopeChain &Context::scopeChain() const
+{
+    return _scopeChain;
+}
+
+ScopeChain &Context::scopeChain()
+{
+    return _scopeChain;
+}
+
+const Imports *Context::imports(const QmlJS::Document *doc) const
+{
+    if (!doc)
+        return 0;
+    return _imports.value(doc).data();
+}
+
+const Value *Context::lookup(const QString &name, const ObjectValue **foundInScope) const
+{
+    QList<const ObjectValue *> scopes = _scopeChain.all();
+    for (int index = scopes.size() - 1; index != -1; --index) {
+        const ObjectValue *scope = scopes.at(index);
+
+        if (const Value *member = scope->lookupMember(name, this)) {
+            if (foundInScope)
+                *foundInScope = scope;
+            return member;
+        }
+    }
+
+    if (foundInScope)
+        *foundInScope = 0;
+    return _valueOwner->undefinedValue();
+}
+
+const ObjectValue *Context::lookupType(const QmlJS::Document *doc, UiQualifiedId *qmlTypeName,
+                                       UiQualifiedId *qmlTypeNameEnd) const
+{
+    const Imports *importsObj = imports(doc);
+    if (!importsObj)
+        return 0;
+    const ObjectValue *objectValue = importsObj->typeScope();
+    if (!objectValue)
+        return 0;
+
+    for (UiQualifiedId *iter = qmlTypeName; objectValue && iter && iter != qmlTypeNameEnd;
+         iter = iter->next) {
+        if (! iter->name)
+            return 0;
+
+        const Value *value = objectValue->lookupMember(iter->name->asString(), this);
+        if (!value)
+            return 0;
+
+        objectValue = value->asObjectValue();
+    }
+
+    return objectValue;
+}
+
+const ObjectValue *Context::lookupType(const QmlJS::Document *doc, const QStringList &qmlTypeName) const
+{
+    const Imports *importsObj = imports(doc);
+    if (!importsObj)
+        return 0;
+    const ObjectValue *objectValue = importsObj->typeScope();
+    if (!objectValue)
+        return 0;
+
+    foreach (const QString &name, qmlTypeName) {
+        if (!objectValue)
+            return 0;
+
+        const Value *value = objectValue->lookupMember(name, this);
+        if (!value)
+            return 0;
+
+        objectValue = value->asObjectValue();
+    }
+
+    return objectValue;
+}
+
+const Value *Context::lookupReference(const Value *value) const
+{
+    const Reference *reference = value_cast<const Reference *>(value);
+    if (!reference)
+        return value;
+
+    if (_referenceStack.contains(reference))
+        return 0;
+
+    _referenceStack.append(reference);
+    const Value *v = reference->value(this);
+    _referenceStack.removeLast();
+
+    return v;
+}
+
+QString Context::defaultPropertyName(const ObjectValue *object) const
+{
+    PrototypeIterator iter(object, this);
+    while (iter.hasNext()) {
+        const ObjectValue *o = iter.next();
+        if (const ASTObjectValue *astObjValue = dynamic_cast<const ASTObjectValue *>(o)) {
+            QString defaultProperty = astObjValue->defaultPropertyName();
+            if (!defaultProperty.isEmpty())
+                return defaultProperty;
+        } else if (const QmlObjectValue *qmlValue = dynamic_cast<const QmlObjectValue *>(o)) {
+            return qmlValue->defaultPropertyName();
+        }
+    }
+    return QString();
+}
diff --git a/src/libs/qmljs/qmljscontext.h b/src/libs/qmljs/qmljscontext.h
new file mode 100644
index 00000000000..bd5c4cf03d5
--- /dev/null
+++ b/src/libs/qmljs/qmljscontext.h
@@ -0,0 +1,90 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (info@qt.nokia.com)
+**
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at info@qt.nokia.com.
+**
+**************************************************************************/
+
+#ifndef QMLJS_CONTEXT_H
+#define QMLJS_CONTEXT_H
+
+#include "qmljs_global.h"
+#include "qmljsvalueowner.h"
+
+#include <QtCore/QSharedPointer>
+
+namespace QmlJS {
+
+class Document;
+class Snapshot;
+
+namespace Interpreter {
+
+class QMLJS_EXPORT Context
+{
+public:
+    typedef QHash<const Document *, QSharedPointer<const Imports> > ImportsPerDocument;
+
+    // Context takes ownership of valueOwner
+    Context(const Snapshot &snapshot, ValueOwner *valueOwner, const ImportsPerDocument &imports);
+    ~Context();
+
+    ValueOwner *valueOwner() const;
+    Snapshot snapshot() const;
+
+    const ScopeChain &scopeChain() const;
+    ScopeChain &scopeChain();
+
+    const Imports *imports(const Document *doc) const;
+
+    const Value *lookup(const QString &name, const ObjectValue **foundInScope = 0) const;
+    const ObjectValue *lookupType(const Document *doc, AST::UiQualifiedId *qmlTypeName,
+                                  AST::UiQualifiedId *qmlTypeNameEnd = 0) const;
+    const ObjectValue *lookupType(const Document *doc, const QStringList &qmlTypeName) const;
+    const Value *lookupReference(const Value *value) const;
+
+    QString defaultPropertyName(const ObjectValue *object) const;
+
+private:
+    typedef QHash<QString, const Value *> Properties;
+
+    Snapshot _snapshot;
+    QSharedPointer<ValueOwner> _valueOwner;
+    ImportsPerDocument _imports;
+    ScopeChain _scopeChain;
+    int _qmlScopeObjectIndex;
+    bool _qmlScopeObjectSet;
+
+    // for avoiding reference cycles during lookup
+    mutable QList<const Reference *> _referenceStack;
+};
+
+} // namespace Interpreter
+} // namespace QmlJS
+
+#endif // QMLJS_CONTEXT_H
diff --git a/src/libs/qmljs/qmljsevaluate.cpp b/src/libs/qmljs/qmljsevaluate.cpp
index b7e65c63e89..955ef7dc562 100644
--- a/src/libs/qmljs/qmljsevaluate.cpp
+++ b/src/libs/qmljs/qmljsevaluate.cpp
@@ -31,7 +31,7 @@
 **************************************************************************/
 
 #include "qmljsevaluate.h"
-#include "qmljsinterpreter.h"
+#include "qmljscontext.h"
 #include "qmljsvalueowner.h"
 #include "parser/qmljsast_p.h"
 #include <QtCore/QDebug>
diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index 8877dcfebec..2587bd62cad 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -38,6 +38,7 @@
 #include "qmljstypedescriptionreader.h"
 #include "qmljsscopeastpath.h"
 #include "qmljsvalueowner.h"
+#include "qmljscontext.h"
 #include "parser/qmljsast_p.h"
 
 #include <languageutils/fakemetaobject.h>
@@ -778,146 +779,6 @@ QList<const ObjectValue *> ScopeChain::all() const
     return _all;
 }
 
-
-Context::Context(const QmlJS::Snapshot &snapshot, ValueOwner *valueOwner, const ImportsPerDocument &imports)
-    : _snapshot(snapshot),
-      _valueOwner(valueOwner),
-      _imports(imports),
-      _qmlScopeObjectIndex(-1),
-      _qmlScopeObjectSet(false)
-{
-}
-
-Context::~Context()
-{
-}
-
-// the values is only guaranteed to live as long as the context
-ValueOwner *Context::valueOwner() const
-{
-    return _valueOwner.data();
-}
-
-QmlJS::Snapshot Context::snapshot() const
-{
-    return _snapshot;
-}
-
-const ScopeChain &Context::scopeChain() const
-{
-    return _scopeChain;
-}
-
-ScopeChain &Context::scopeChain()
-{
-    return _scopeChain;
-}
-
-const Imports *Context::imports(const QmlJS::Document *doc) const
-{
-    if (!doc)
-        return 0;
-    return _imports.value(doc).data();
-}
-
-const Value *Context::lookup(const QString &name, const ObjectValue **foundInScope) const
-{
-    QList<const ObjectValue *> scopes = _scopeChain.all();
-    for (int index = scopes.size() - 1; index != -1; --index) {
-        const ObjectValue *scope = scopes.at(index);
-
-        if (const Value *member = scope->lookupMember(name, this)) {
-            if (foundInScope)
-                *foundInScope = scope;
-            return member;
-        }
-    }
-
-    if (foundInScope)
-        *foundInScope = 0;
-    return _valueOwner->undefinedValue();
-}
-
-const ObjectValue *Context::lookupType(const QmlJS::Document *doc, UiQualifiedId *qmlTypeName,
-                                       UiQualifiedId *qmlTypeNameEnd) const
-{
-    const Imports *importsObj = imports(doc);
-    if (!importsObj)
-        return 0;
-    const ObjectValue *objectValue = importsObj->typeScope();
-    if (!objectValue)
-        return 0;
-
-    for (UiQualifiedId *iter = qmlTypeName; objectValue && iter && iter != qmlTypeNameEnd;
-         iter = iter->next) {
-        if (! iter->name)
-            return 0;
-
-        const Value *value = objectValue->lookupMember(iter->name->asString(), this);
-        if (!value)
-            return 0;
-
-        objectValue = value->asObjectValue();
-    }
-
-    return objectValue;
-}
-
-const ObjectValue *Context::lookupType(const QmlJS::Document *doc, const QStringList &qmlTypeName) const
-{
-    const Imports *importsObj = imports(doc);
-    if (!importsObj)
-        return 0;
-    const ObjectValue *objectValue = importsObj->typeScope();
-    if (!objectValue)
-        return 0;
-
-    foreach (const QString &name, qmlTypeName) {
-        if (!objectValue)
-            return 0;
-
-        const Value *value = objectValue->lookupMember(name, this);
-        if (!value)
-            return 0;
-
-        objectValue = value->asObjectValue();
-    }
-
-    return objectValue;
-}
-
-const Value *Context::lookupReference(const Value *value) const
-{
-    const Reference *reference = value_cast<const Reference *>(value);
-    if (!reference)
-        return value;
-
-    if (_referenceStack.contains(reference))
-        return 0;
-
-    _referenceStack.append(reference);
-    const Value *v = reference->value(this);
-    _referenceStack.removeLast();
-
-    return v;
-}
-
-QString Context::defaultPropertyName(const ObjectValue *object) const
-{
-    PrototypeIterator iter(object, this);
-    while (iter.hasNext()) {
-        const ObjectValue *o = iter.next();
-        if (const ASTObjectValue *astObjValue = dynamic_cast<const ASTObjectValue *>(o)) {
-            QString defaultProperty = astObjValue->defaultPropertyName();
-            if (!defaultProperty.isEmpty())
-                return defaultProperty;
-        } else if (const QmlObjectValue *qmlValue = dynamic_cast<const QmlObjectValue *>(o)) {
-            return qmlValue->defaultPropertyName();
-        }
-    }
-    return QString();
-}
-
 Reference::Reference(ValueOwner *valueOwner)
     : _valueOwner(valueOwner)
 {
diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h
index 53f682556ae..2dbcc694dda 100644
--- a/src/libs/qmljs/qmljsinterpreter.h
+++ b/src/libs/qmljs/qmljsinterpreter.h
@@ -74,6 +74,7 @@ class AnchorLineValue;
 class Imports;
 class TypeScope;
 class JSImportScope;
+class Context;
 
 typedef QList<const Value *> ValueList;
 
@@ -316,45 +317,6 @@ private:
     QList<const ObjectValue *> _all;
 };
 
-class QMLJS_EXPORT Context
-{
-public:
-    typedef QHash<const Document *, QSharedPointer<const Imports> > ImportsPerDocument;
-
-    // Context takes ownership of valueOwner
-    Context(const Snapshot &snapshot, ValueOwner *valueOwner, const ImportsPerDocument &imports);
-    ~Context();
-
-    ValueOwner *valueOwner() const;
-    Snapshot snapshot() const;
-
-    const ScopeChain &scopeChain() const;
-    ScopeChain &scopeChain();
-
-    const Imports *imports(const Document *doc) const;
-
-    const Value *lookup(const QString &name, const ObjectValue **foundInScope = 0) const;
-    const ObjectValue *lookupType(const Document *doc, AST::UiQualifiedId *qmlTypeName,
-                                  AST::UiQualifiedId *qmlTypeNameEnd = 0) const;
-    const ObjectValue *lookupType(const Document *doc, const QStringList &qmlTypeName) const;
-    const Value *lookupReference(const Value *value) const;
-
-    QString defaultPropertyName(const ObjectValue *object) const;
-
-private:
-    typedef QHash<QString, const Value *> Properties;
-
-    Snapshot _snapshot;
-    QSharedPointer<ValueOwner> _valueOwner;
-    ImportsPerDocument _imports;
-    ScopeChain _scopeChain;
-    int _qmlScopeObjectIndex;
-    bool _qmlScopeObjectSet;
-
-    // for avoiding reference cycles during lookup
-    mutable QList<const Reference *> _referenceStack;
-};
-
 class QMLJS_EXPORT Reference: public Value
 {
 public:
diff --git a/src/libs/qmljs/qmljslookupcontext.cpp b/src/libs/qmljs/qmljslookupcontext.cpp
index 97275b0eea6..f6725ef1988 100644
--- a/src/libs/qmljs/qmljslookupcontext.cpp
+++ b/src/libs/qmljs/qmljslookupcontext.cpp
@@ -31,7 +31,7 @@
 **************************************************************************/
 
 #include "qmljslookupcontext.h"
-#include "qmljsinterpreter.h"
+#include "qmljscontext.h"
 #include "qmljslink.h"
 #include "qmljsscopebuilder.h"
 #include "qmljsmodelmanagerinterface.h"
diff --git a/src/libs/qmljs/qmljslookupcontext.h b/src/libs/qmljs/qmljslookupcontext.h
index c2066d88ea2..ce4199e0921 100644
--- a/src/libs/qmljs/qmljslookupcontext.h
+++ b/src/libs/qmljs/qmljslookupcontext.h
@@ -34,7 +34,7 @@
 #define QMLJSLOOKUPCONTEXT_H
 
 #include "qmljsdocument.h"
-#include "qmljsinterpreter.h"
+#include "qmljscontext.h"
 #include "parser/qmljsastfwd_p.h"
 
 #include <QtCore/QSharedPointer>
diff --git a/src/libs/qmljs/qmljsscopebuilder.cpp b/src/libs/qmljs/qmljsscopebuilder.cpp
index 4ba48874b81..10f18e6a803 100644
--- a/src/libs/qmljs/qmljsscopebuilder.cpp
+++ b/src/libs/qmljs/qmljsscopebuilder.cpp
@@ -33,7 +33,7 @@
 #include "qmljsscopebuilder.h"
 
 #include "qmljsbind.h"
-#include "qmljsinterpreter.h"
+#include "qmljscontext.h"
 #include "qmljsevaluate.h"
 #include "parser/qmljsast_p.h"
 
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
index 422fb677e80..60f48df12d6 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
@@ -48,7 +48,7 @@
 
 #include <qmljs/qmljslookupcontext.h>
 #include <qmljs/qmljsdocument.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljsbind.h>
 #include <qmljs/parser/qmljsast_p.h>
 #include <languageutils/fakemetaobject.h>
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index f8a8b99acdd..00910fb9db6 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -47,7 +47,7 @@
 #include <languageutils/componentversion.h>
 #include <qmljs/qmljsevaluate.h>
 #include <qmljs/qmljsinterpreter.h>
-#include <qmljs/qmljsvalueowner.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljslink.h>
 #include <qmljs/qmljsscopebuilder.h>
 #include <qmljs/parser/qmljsast_p.h>
diff --git a/src/plugins/qmljseditor/qmljscompletionassist.cpp b/src/plugins/qmljseditor/qmljscompletionassist.cpp
index 6b914aba981..48e1aa2e65f 100644
--- a/src/plugins/qmljseditor/qmljscompletionassist.cpp
+++ b/src/plugins/qmljseditor/qmljscompletionassist.cpp
@@ -47,6 +47,7 @@
 #include <qmljs/qmljsmodelmanagerinterface.h>
 #include <qmljs/parser/qmljsast_p.h>
 #include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljslookupcontext.h>
 #include <qmljs/qmljsscanner.h>
 #include <qmljs/qmljsbind.h>
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index ee66b782b84..3240ecd4e95 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -37,7 +37,7 @@
 
 #include <qmljs/qmljsdocument.h>
 #include <qmljs/qmljsscanner.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <texteditor/basetexteditor.h>
 #include <texteditor/quickfix.h>
 
diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp
index 210982f7a4f..e866b50aef4 100644
--- a/src/plugins/qmljseditor/qmljsfindreferences.cpp
+++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp
@@ -48,6 +48,7 @@
 #include <qmljs/qmljsevaluate.h>
 #include <qmljs/qmljsscopebuilder.h>
 #include <qmljs/qmljsscopeastpath.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/parser/qmljsastvisitor_p.h>
 #include <qmljs/parser/qmljsast_p.h>
 
diff --git a/src/plugins/qmljseditor/qmljshoverhandler.cpp b/src/plugins/qmljseditor/qmljshoverhandler.cpp
index dd94d1eefb1..eb1f664229a 100644
--- a/src/plugins/qmljseditor/qmljshoverhandler.cpp
+++ b/src/plugins/qmljseditor/qmljshoverhandler.cpp
@@ -39,7 +39,7 @@
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/helpmanager.h>
 #include <extensionsystem/pluginmanager.h>
-#include <qmljs/qmljsvalueowner.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljsinterpreter.h>
 #include <qmljs/parser/qmljsast_p.h>
 #include <qmljs/parser/qmljsastfwd_p.h>
diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp
index 30dc4edd57d..24659d68031 100644
--- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp
+++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp
@@ -35,7 +35,7 @@
 #include <qmljs/qmljsmodelmanagerinterface.h>
 #include <qmljs/qmljsdocument.h>
 #include <qmljs/qmljscheck.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljslink.h>
 
 namespace QmlJSEditor {
diff --git a/src/plugins/qmljseditor/qmloutlinemodel.cpp b/src/plugins/qmljseditor/qmloutlinemodel.cpp
index 12fe1b4474d..0b50232e908 100644
--- a/src/plugins/qmljseditor/qmloutlinemodel.cpp
+++ b/src/plugins/qmljseditor/qmloutlinemodel.cpp
@@ -34,8 +34,7 @@
 #include "qmljseditor.h"
 
 #include <qmljs/parser/qmljsastvisitor_p.h>
-#include <qmljs/qmljsvalueowner.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljslookupcontext.h>
 #include <qmljs/qmljsmodelmanagerinterface.h>
 #include <qmljs/qmljsrewriter.h>
diff --git a/src/plugins/qmljseditor/qmltaskmanager.cpp b/src/plugins/qmljseditor/qmltaskmanager.cpp
index 2fdc44f8064..3606147f16d 100644
--- a/src/plugins/qmljseditor/qmltaskmanager.cpp
+++ b/src/plugins/qmljseditor/qmltaskmanager.cpp
@@ -37,7 +37,7 @@
 #include <extensionsystem/pluginmanager.h>
 #include <projectexplorer/taskhub.h>
 #include <qmljs/qmljsmodelmanagerinterface.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljslink.h>
 #include <qmljs/qmljscheck.h>
 #include <qmljseditor/qmljseditor.h>
diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp
index a68b229f857..50b8b553e48 100644
--- a/src/plugins/qmljseditor/quicktoolbar.cpp
+++ b/src/plugins/qmljseditor/quicktoolbar.cpp
@@ -41,7 +41,7 @@
 #include <qmljs/qmljsrewriter.h>
 #include <qmljs/qmljsindenter.h>
 #include <qmljs/qmljslookupcontext.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljsbind.h>
 #include <qmljs/qmljsscopebuilder.h>
 #include <qmljs/qmljsevaluate.h>
diff --git a/src/plugins/qmljstools/qmljslocatordata.cpp b/src/plugins/qmljstools/qmljslocatordata.cpp
index 093fbc45329..d21dc9dc216 100644
--- a/src/plugins/qmljstools/qmljslocatordata.cpp
+++ b/src/plugins/qmljstools/qmljslocatordata.cpp
@@ -34,7 +34,7 @@
 
 #include <qmljs/qmljsmodelmanagerinterface.h>
 #include <qmljs/qmljsbind.h>
-#include <qmljs/qmljsinterpreter.h>
+//#include <qmljs/qmljsinterpreter.h>
 #include <qmljs/parser/qmljsast_p.h>
 
 using namespace QmlJSTools::Internal;
diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp
index dceea2f3025..c5de53fa6d4 100644
--- a/src/plugins/qmljstools/qmljsmodelmanager.cpp
+++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp
@@ -43,7 +43,7 @@
 #include <cplusplus/CppDocument.h>
 #include <cplusplus/TypeOfExpression.h>
 #include <cplusplus/Overview.h>
-#include <qmljs/qmljsinterpreter.h>
+#include <qmljs/qmljscontext.h>
 #include <qmljs/qmljsbind.h>
 #include <qmljs/parser/qmldirparser_p.h>
 #include <texteditor/itexteditor.h>
-- 
GitLab