diff --git a/share/qtcreator/qml-type-descriptions/builtins.qmltypes b/share/qtcreator/qml-type-descriptions/builtins.qmltypes index a0c315086e1..dd8dcfb4172 100644 --- a/share/qtcreator/qml-type-descriptions/builtins.qmltypes +++ b/share/qtcreator/qml-type-descriptions/builtins.qmltypes @@ -265,7 +265,7 @@ Module { name: "QDeclarativeComponent" prototype: "QObject" exports: [ - "QtQuick/Component 1.0" + "QML/Component 1.0" ] exportMetaObjectRevisions: [ 0 @@ -3209,7 +3209,7 @@ Module { Component { name: "QObject" exports: [ - "QtQuick/QtObject 1.0" + "QML/QtObject 1.0" ] exportMetaObjectRevisions: [ 0 diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 2ce98efad3e..bd759b2f644 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -83,6 +83,7 @@ public: const Utils::FilePath &libraryPath); void loadImplicitDirectoryImports(Imports *imports, const Document::Ptr &doc); void loadImplicitDefaultImports(Imports *imports); + void loadImplicitBuiltinsImports(Imports *imports); void error(const Document::Ptr &doc, const SourceLocation &loc, const QString &message); void warning(const Document::Ptr &doc, const SourceLocation &loc, const QString &message); @@ -91,6 +92,8 @@ public: private: friend class Link; + void loadImplicitImports(Imports *imports, const QString &packageName, const QString &moduleName); + Snapshot m_snapshot; ValueOwner *m_valueOwner = nullptr; QList m_importPaths; @@ -255,8 +258,11 @@ void LinkPrivate::populateImportedTypes(Imports *imports, const Document::Ptr &d { importableModuleApis.clear(); - // implicit imports: the package is always available + // implicit imports: the package is always available (except when the QML package was loaded). + // In the latter case, still try to load the 's module . loadImplicitDefaultImports(imports); + // Load the import, if the QML package was loaded. + loadImplicitBuiltinsImports(imports); // implicit imports: // qml files in the same directory are available without explicit imports @@ -684,20 +690,19 @@ void LinkPrivate::loadImplicitDirectoryImports(Imports *imports, const Document: } } -void LinkPrivate::loadImplicitDefaultImports(Imports *imports) +void LinkPrivate::loadImplicitImports(Imports *imports, const QString &packageName, const QString &moduleName) { - const QString defaultPackage = CppQmlTypes::defaultPackage; - if (m_valueOwner->cppQmlTypes().hasModule(defaultPackage)) { + if (m_valueOwner->cppQmlTypes().hasModule(packageName)) { const ComponentVersion maxVersion(ComponentVersion::MaxVersion, ComponentVersion::MaxVersion); - const ImportInfo info = ImportInfo::moduleImport(defaultPackage, maxVersion, QString()); + const ImportInfo info = ImportInfo::moduleImport(packageName, maxVersion, QString()); Import import = importCache.value(ImportCacheKey(info)); if (!import.object) { import.valid = true; import.info = info; - import.object = new ObjectValue(m_valueOwner, QLatin1String("")); + import.object = new ObjectValue(m_valueOwner, moduleName); - const auto objects = m_valueOwner->cppQmlTypes().createObjectsForImport(defaultPackage, + const auto objects = m_valueOwner->cppQmlTypes().createObjectsForImport(packageName, maxVersion); for (const CppComponentValue *object : objects) import.object->setMember(object->className(), object); @@ -708,4 +713,14 @@ void LinkPrivate::loadImplicitDefaultImports(Imports *imports) } } +void LinkPrivate::loadImplicitDefaultImports(Imports *imports) +{ + loadImplicitImports(imports, CppQmlTypes::defaultPackage, QLatin1String("")); +} + +void LinkPrivate::loadImplicitBuiltinsImports(Imports *imports) +{ + loadImplicitImports(imports, QLatin1String("QML"), QLatin1String("")); +} + } // namespace QmlJS