diff options
Diffstat (limited to 'src/libs/qmljs/qmljslink.cpp')
-rw-r--r-- | src/libs/qmljs/qmljslink.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp index 8c2cda4568..1ff75045e0 100644 --- a/src/libs/qmljs/qmljslink.cpp +++ b/src/libs/qmljs/qmljslink.cpp @@ -233,15 +233,13 @@ Context::ImportsPerDocument LinkPrivate::linkImports() void LinkPrivate::populateImportedTypes(Imports *imports, Document::Ptr doc) { - if (! doc->qmlProgram()) - return; - // implicit imports: the <default> package is always available loadImplicitDefaultImports(imports); // implicit imports: // qml files in the same directory are available without explicit imports - loadImplicitDirectoryImports(imports, doc); + if (doc->isQmlDocument()) + loadImplicitDirectoryImports(imports, doc); // explicit imports, whether directories, files or libraries foreach (const ImportInfo &info, doc->bind()->imports()) { @@ -261,8 +259,10 @@ void LinkPrivate::populateImportedTypes(Imports *imports, Document::Ptr doc) import = importNonFile(doc, info); break; case ImportInfo::UnknownFileImport: - error(doc, info.ast()->fileNameToken, - Link::tr("file or directory not found")); + if (info.ast()) { + error(doc, info.ast()->fileNameToken, + Link::tr("file or directory not found")); + } break; default: break; @@ -400,9 +400,8 @@ bool LinkPrivate::importLibrary(Document::Ptr doc, import->libraryPath = libraryPath; const ComponentVersion version = importInfo.version(); - const UiImport *ast = importInfo.ast(); SourceLocation errorLoc; - if (ast) + if (const UiImport *ast = importInfo.ast()) errorLoc = locationFromRange(ast->firstSourceLocation(), ast->lastSourceLocation()); if (!libraryInfo.plugins().isEmpty()) { @@ -505,8 +504,7 @@ void LinkPrivate::loadQmldirComponents(ObjectValue *import, ComponentVersion ver void LinkPrivate::loadImplicitDirectoryImports(Imports *imports, Document::Ptr doc) { - ImportInfo implcitDirectoryImportInfo( - ImportInfo::ImplicitDirectoryImport, doc->path()); + ImportInfo implcitDirectoryImportInfo = ImportInfo::implicitDirectoryImport(doc->path()); Import directoryImport = importCache.value(ImportCacheKey(implcitDirectoryImportInfo)); if (!directoryImport.object) { @@ -523,15 +521,15 @@ void LinkPrivate::loadImplicitDefaultImports(Imports *imports) { const QString defaultPackage = CppQmlTypes::defaultPackage; if (valueOwner->cppQmlTypes().hasModule(defaultPackage)) { - ImportInfo info(ImportInfo::LibraryImport, defaultPackage); + const ComponentVersion maxVersion(ComponentVersion::MaxVersion, ComponentVersion::MaxVersion); + const ImportInfo info = ImportInfo::moduleImport(defaultPackage, maxVersion, QString()); Import import = importCache.value(ImportCacheKey(info)); if (!import.object) { import.info = info; import.object = new ObjectValue(valueOwner); foreach (const QmlObjectValue *object, valueOwner->cppQmlTypes().createObjectsForImport( - defaultPackage, - ComponentVersion(ComponentVersion::MaxVersion, ComponentVersion::MaxVersion))) { + defaultPackage, maxVersion)) { import.object->setMember(object->className(), object); } importCache.insert(ImportCacheKey(info), import); |