diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index f4f19553698..a4914e17993 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -54,10 +54,13 @@ #include #include +#include using namespace LanguageUtils; using namespace QmlJS; +static Q_LOGGING_CATEGORY(rewriterBenchmark, "rewriter.load") + namespace { static inline bool isSupportedAttachedProperties(const QString &propertyName) @@ -866,6 +869,12 @@ void TextToModelMerger::setupUsedImports() bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceHandler) { + qCInfo(rewriterBenchmark) << Q_FUNC_INFO; + + QTime time; + if (rewriterBenchmark().isInfoEnabled()) + time.start(); + // maybe the project environment (kit, ...) changed, so we need to clean old caches NodeMetaInfo::clearCache(); @@ -889,6 +898,8 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH doc->setSource(data); doc->parseQml(); + qCInfo(rewriterBenchmark) << "parsed correctly: " << doc->isParsedCorrectly() << time.elapsed(); + if (!doc->isParsedCorrectly()) { QList errors; foreach (const QmlJS::DiagnosticMessage &message, doc->diagnosticMessages()) @@ -904,6 +915,8 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH new ScopeChain(ctxt.scopeChain())); m_document = doc; + qCInfo(rewriterBenchmark) << "linked:" << time.elapsed(); + QList errors; QList warnings; @@ -916,6 +929,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH if (view()->checkSemanticErrors()) { + collectSemanticErrorsAndWarnings(&errors, &warnings); if (!errors.isEmpty()) { @@ -924,6 +938,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH return false; } m_rewriterView->setWarnings(warnings); + qCInfo(rewriterBenchmark) << "checked semantic errors:" << time.elapsed(); } setupUsedImports(); @@ -935,6 +950,8 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH syncNode(modelRootNode, astRootNode, &ctxt, differenceHandler); m_rewriterView->positionStorage()->cleanupInvalidOffsets(); + qCInfo(rewriterBenchmark) << "synced nodes:" << time.elapsed(); + setActive(false); return true; } catch (Exception &e) {