qmljs: new import/dep tracking

Change-Id: I9f4de2a06aad3afb80372a4b80e56db658683575
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
Fawzi Mohamed
2013-10-16 15:08:27 +02:00
parent 5bf3ed7c6a
commit e1b44e870f
24 changed files with 1327 additions and 32 deletions

View File

@@ -1121,6 +1121,34 @@ LibraryInfo ModelManager::builtins(const Document::Ptr &doc) const
return _validSnapshot.libraryInfo(info.qtImportsPath);
}
ViewerContext ModelManager::completeVContext(const ViewerContext &vCtx,
const Document::Ptr &doc) const
{
Q_UNUSED(doc);
ViewerContext res = vCtx;
switch (res.flags) {
case ViewerContext::Complete:
break;
case ViewerContext::AddQtPath:
case ViewerContext::AddAllPaths:
res.paths << importPaths();
}
return res;
}
ViewerContext ModelManager::defaultVContext(bool autoComplete, const Document::Ptr &doc) const
{
if (autoComplete)
return completeVContext(m_vContext, doc);
else
return m_vContext;
}
void ModelManager::setDefaultVContext(const ViewerContext &vContext)
{
m_vContext = vContext;
}
void ModelManager::joinAllThreads()
{
foreach (QFuture<void> future, m_synchronizer.futures())

View File

@@ -115,6 +115,14 @@ public:
QmlJS::LibraryInfo builtins(const QmlJS::Document::Ptr &doc) const QTC_OVERRIDE;
QmlJS::ViewerContext completeVContext(
const QmlJS::ViewerContext &vCtx,
const QmlJS::Document::Ptr &doc = QmlJS::Document::Ptr(0)) const QTC_OVERRIDE;
QmlJS::ViewerContext defaultVContext(
bool autoComplete = true,
const QmlJS::Document::Ptr &doc = QmlJS::Document::Ptr(0)) const QTC_OVERRIDE;
void setDefaultVContext(const QmlJS::ViewerContext &vContext) QTC_OVERRIDE;
void joinAllThreads() QTC_OVERRIDE;
public slots:
@@ -158,6 +166,7 @@ private:
QStringList m_defaultImportPaths;
QmlJS::QmlLanguageBundles m_activeBundles;
QmlJS::QmlLanguageBundles m_extendedBundles;
QmlJS::ViewerContext m_vContext;
QTimer *m_updateCppQmlTypesTimer;
QTimer *m_asyncResetTimer;

View File

@@ -53,7 +53,7 @@ void QmlJSTools::Internal::QmlJSToolsPlugin::test_basic()
Document::Ptr doc = snapshot.document(welcomescreenRootPath);
QVERIFY(doc && doc->isQmlDocument());
ContextPtr context = Link(snapshot, QStringList(), LibraryInfo())();
ContextPtr context = Link(snapshot, ViewerContext(), LibraryInfo())();
QVERIFY(context);
const CppComponentValue *rectangleValue = context->valueOwner()->cppQmlTypes().objectByQualifiedName(