diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 4d700da2e738fdaf979ab43d34e38dec455dfda3..0336f31ea9bee27a88049a71c0be4afb3a21e62d 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -556,13 +556,6 @@ QList<AST::Node *> SemanticInfo::astPath(int cursorPosition) const
 
 LookupContext::Ptr SemanticInfo::lookupContext(const QList<QmlJS::AST::Node *> &path) const
 {
-    // create and link context if necessary
-    if (!m_context) {
-        Interpreter::Context *ctx = new Interpreter::Context;
-        Link link(ctx, document, snapshot, ModelManagerInterface::instance()->importPaths());
-        m_context = QSharedPointer<const QmlJS::Interpreter::Context>(ctx);
-    }
-
     return LookupContext::create(document, snapshot, *m_context, path);
 }
 
@@ -1896,6 +1889,10 @@ SemanticInfo SemanticHighlighter::semanticInfo(const Source &source)
     semanticInfo.snapshot = snapshot;
     semanticInfo.document = doc;
 
+    Interpreter::Context *ctx = new Interpreter::Context;
+    Link link(ctx, doc, snapshot, ModelManagerInterface::instance()->importPaths());
+    semanticInfo.m_context = QSharedPointer<const QmlJS::Interpreter::Context>(ctx);
+
     QStringList importPaths;
     if (m_modelManager)
         importPaths = m_modelManager->importPaths();
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index d905b52ffbabd21d3bd41877f7a2fcabe17f70ec..7e83fd8c7c48a048a830f9417ace7c69cc07c536 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -114,6 +114,8 @@ public: // attributes
     QTextCursor end;
 };
 
+class SemanticHighlighter;
+
 class SemanticInfo
 {
 public:
@@ -145,8 +147,9 @@ public: // attributes
     QList<QmlJS::DiagnosticMessage> semanticMessages;
 
 private:
-    // created lazily
-    mutable QSharedPointer<const QmlJS::Interpreter::Context> m_context;
+    QSharedPointer<const QmlJS::Interpreter::Context> m_context;
+
+    friend class SemanticHighlighter;
 };
 
 class SemanticHighlighter: public QThread