diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index 0586b1b420c..dd7491eefaa 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -1324,6 +1324,8 @@ LibraryInfo ModelManagerInterface::builtins(const Document::Ptr &doc) const ProjectInfo info = projectInfoForPath(doc->path()); if (!info.isValid()) return LibraryInfo(); + if (!info.qtQmlPath.isEmpty()) + return m_validSnapshot.libraryInfo(info.qtQmlPath); return m_validSnapshot.libraryInfo(info.qtImportsPath); } diff --git a/src/libs/qmljs/qmljsplugindumper.cpp b/src/libs/qmljs/qmljsplugindumper.cpp index 36bf522ebc8..558b25bc4a1 100644 --- a/src/libs/qmljs/qmljsplugindumper.cpp +++ b/src/libs/qmljs/qmljsplugindumper.cpp @@ -93,34 +93,35 @@ void PluginDumper::scheduleMaybeRedumpBuiltins(const QmlJS::ModelManagerInterfac void PluginDumper::onLoadBuiltinTypes(const QmlJS::ModelManagerInterface::ProjectInfo &info, bool force) { - if (info.qmlDumpPath.isEmpty() || info.qtImportsPath.isEmpty()) + if (info.qmlDumpPath.isEmpty() || (info.qtImportsPath.isEmpty() && info.qtQmlPath.isEmpty())) return; - const QString importsPath = QDir::cleanPath(info.qtImportsPath); + const QString baseImportsPath = info.qtQmlPath.isEmpty() ? info.qtImportsPath : info.qtQmlPath; + const QString importsPath = QDir::cleanPath(baseImportsPath); if (m_runningQmldumps.values().contains(importsPath)) return; LibraryInfo builtinInfo; if (!force) { const Snapshot snapshot = m_modelManager->snapshot(); - builtinInfo = snapshot.libraryInfo(info.qtImportsPath); + builtinInfo = snapshot.libraryInfo(baseImportsPath); if (builtinInfo.isValid()) return; } builtinInfo = LibraryInfo(LibraryInfo::Found); m_modelManager->updateLibraryInfo(info.qtImportsPath, builtinInfo); - // prefer QTDIR/imports/builtins.qmltypes if available - const QString builtinQmltypesPath = info.qtImportsPath + QLatin1String("/builtins.qmltypes"); + // prefer QTDIR/qml/builtins.qmltypes if available + const QString builtinQmltypesPath = baseImportsPath + QLatin1String("/builtins.qmltypes"); if (QFile::exists(builtinQmltypesPath)) { - loadQmltypesFile(QStringList(builtinQmltypesPath), info.qtImportsPath, builtinInfo); + loadQmltypesFile(QStringList(builtinQmltypesPath), baseImportsPath, builtinInfo); return; } // QTDIR/imports/QtQuick1/builtins.qmltypes was used in developer builds of 5.0.0, 5.0.1 const QString builtinQmltypesPath2 = info.qtImportsPath + QLatin1String("/QtQuick1/builtins.qmltypes"); if (QFile::exists(builtinQmltypesPath2)) { - loadQmltypesFile(QStringList(builtinQmltypesPath2), info.qtImportsPath, builtinInfo); + loadQmltypesFile(QStringList(builtinQmltypesPath2), baseImportsPath, builtinInfo); return; } @@ -131,8 +132,8 @@ void PluginDumper::onLoadBuiltinTypes(const QmlJS::ModelManagerInterface::Projec connect(process, SIGNAL(error(QProcess::ProcessError)), SLOT(qmlPluginTypeDumpError(QProcess::ProcessError))); QStringList args(QLatin1String("--builtins")); process->start(info.qmlDumpPath, args); - m_runningQmldumps.insert(process, info.qtImportsPath); - m_qtToInfo.insert(info.qtImportsPath, info); + m_runningQmldumps.insert(process, baseImportsPath); + m_qtToInfo.insert(baseImportsPath, info); } static QString makeAbsolute(const QString &path, const QString &base)