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