diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 3b3ef034ff6..65704bc3a53 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -1158,6 +1158,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH if (!errors.isEmpty()) { m_rewriterView->setErrors(errors); setActive(false); + clearPossibleImportKeys(); return false; } if (!justSanityCheck) @@ -1179,6 +1180,12 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH setActive(false); + // Clear possible imports cache if code model hasn't settled yet + const int importKeysSize = m_possibleImportKeys.size(); + if (m_previousPossibleImportsSize != importKeysSize) + m_possibleImportKeys.clear(); + m_previousPossibleImportsSize = importKeysSize; + return true; } catch (Exception &e) { DocumentMessage error(&e); @@ -2452,6 +2459,7 @@ QList TextToModelMerger::getQMLSingletons() const void TextToModelMerger::clearPossibleImportKeys() { m_possibleImportKeys.clear(); + m_previousPossibleImportsSize = -1; } QString TextToModelMerger::textAt(const Document::Ptr &doc, diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h index 4b2f7ae990a..6bf0b2b84ed 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.h @@ -151,6 +151,7 @@ private: QmlJS::ViewerContext m_vContext; QSet > m_qrcMapping; QSet m_possibleImportKeys; + int m_previousPossibleImportsSize = -1; bool m_hasVersionlessImport = false; };