QmlDesigner: Retrieve possible imports only once per project

Getting the possible imports is slow.
Add extra log for setupPossibleImports().

Task-number: QDS-8042
Change-Id: I9afee8d0fdedadb5694a47433ac343a398f52b68
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2022-10-20 17:43:50 +02:00
committed by Tim Jenssen
parent a8e74a1738
commit 07d30b8632

View File

@@ -990,9 +990,17 @@ static QList<QmlDesigner::Import> generatePossibleLibraryImports(const QHash<QSt
void TextToModelMerger::setupPossibleImports(const QmlJS::Snapshot &snapshot, const QmlJS::ViewerContext &viewContext)
{
static QUrl lastProjectUrl;
auto &externalDependencies = m_rewriterView->externalDependencies();
auto projectUrl = externalDependencies.projectUrl();
if (m_possibleImportKeys.isEmpty() || projectUrl != lastProjectUrl)
m_possibleImportKeys = snapshot.importDependencies()->libraryImports(viewContext);
QHash<QString, ImportKey> filteredPossibleImportKeys
= filterPossibleImportKeys(m_possibleImportKeys, m_rewriterView->model());
lastProjectUrl = projectUrl;
QHash<QString, ImportKey> filteredPossibleImportKeys = filterPossibleImportKeys(
m_possibleImportKeys, m_rewriterView->model());
const QmlJS::Imports *imports = m_scopeChain->context()->imports(m_document.data());
if (imports)
@@ -1139,6 +1147,9 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH
collectLinkErrors(&errors, ctxt);
setupPossibleImports(snapshot, m_vContext);
qCInfo(rewriterBenchmark) << "possible imports:" << time.elapsed();
setupImports(m_document, differenceHandler);
qCInfo(rewriterBenchmark) << "imports setup:" << time.elapsed();