diff options
Diffstat (limited to 'src/qmlcompiler/qqmljsscope.cpp')
| -rw-r--r-- | src/qmlcompiler/qqmljsscope.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/qmlcompiler/qqmljsscope.cpp b/src/qmlcompiler/qqmljsscope.cpp index b32f86226e..535134072f 100644 --- a/src/qmlcompiler/qqmljsscope.cpp +++ b/src/qmlcompiler/qqmljsscope.cpp @@ -1143,12 +1143,27 @@ bool QQmlJSScope::Export::isValid() const return m_version.isValid() || !m_package.isEmpty() || !m_type.isEmpty(); } +QDeferredFactory<QQmlJSScope>::QDeferredFactory(QQmlJSImporter *importer, const QString &filePath, + const TypeReader &typeReader) + : m_filePath(filePath), + m_importer(importer), + m_typeReader(typeReader ? typeReader + : [](QQmlJSImporter *importer, const QString &filePath, + const QSharedPointer<QQmlJSScope> &scopeToPopulate) { + QQmlJSTypeReader defaultTypeReader(importer, filePath); + defaultTypeReader(scopeToPopulate); + return defaultTypeReader.errors(); + }) +{ +} + void QDeferredFactory<QQmlJSScope>::populate(const QSharedPointer<QQmlJSScope> &scope) const { scope->setOwnModuleName(m_moduleName); - QQmlJSTypeReader typeReader(m_importer, m_filePath); - typeReader(scope); - m_importer->m_globalWarnings.append(typeReader.errors()); + + QList<QQmlJS::DiagnosticMessage> errors = m_typeReader(m_importer, m_filePath, scope); + m_importer->m_globalWarnings.append(errors); + scope->setInternalName(internalName()); QQmlJSScope::resolveEnums(scope, m_importer->builtinInternalNames()); QQmlJSScope::resolveList(scope, m_importer->builtinInternalNames().arrayType()); |
