QmlDesigner: Support optional imports in qmldir

optional import Foo

Task-number: QDS-6945
Change-Id: Ib1136f4ffb3b7883bf50532dc7fd7cbd1fe04508
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Marco Bubke
2022-05-16 15:44:12 +02:00
parent d3c9e3afc9
commit 8b31c4a0ba
2 changed files with 42 additions and 3 deletions

View File

@@ -145,9 +145,6 @@ void addModuleExportedImports(Storage::ModuleExportedImports &imports,
ProjectStorageInterface &projectStorage) ProjectStorageInterface &projectStorage)
{ {
for (const QmlDirParser::Import &qmldirImport : qmldirImports) { for (const QmlDirParser::Import &qmldirImport : qmldirImports) {
if (qmldirImport.flags & QmlDirParser::Import::Flag::Optional)
continue;
ModuleId exportedModuleId = projectStorage.moduleId(Utils::PathString{qmldirImport.module}); ModuleId exportedModuleId = projectStorage.moduleId(Utils::PathString{qmldirImport.module});
imports.emplace_back(moduleId, imports.emplace_back(moduleId,
exportedModuleId, exportedModuleId,

View File

@@ -1258,4 +1258,46 @@ TEST_F(ProjectStorageUpdater, SynchronizeQmldirImportsWithDoubleEntries)
updater.update(qmlDirs, {}); updater.update(qmlDirs, {});
} }
TEST_F(ProjectStorageUpdater, SynchronizeQmldirOptionalImports)
{
QString qmldir{R"(module Example
import Qml auto
import QML 2.1
optional import Quick
)"};
ON_CALL(fileSystemMock, contentAsQString(Eq(QString("/path/qmldir")))).WillByDefault(Return(qmldir));
EXPECT_CALL(projectStorageMock,
synchronize(
AllOf(Field(&SynchronizationPackage::moduleExportedImports,
UnorderedElementsAre(ModuleExportedImport{exampleModuleId,
qmlModuleId,
Storage::Version{},
IsAutoVersion::Yes},
ModuleExportedImport{exampleCppNativeModuleId,
qmlCppNativeModuleId,
Storage::Version{},
IsAutoVersion::No},
ModuleExportedImport{exampleModuleId,
builtinModuleId,
Storage::Version{2, 1},
IsAutoVersion::No},
ModuleExportedImport{exampleCppNativeModuleId,
builtinCppNativeModuleId,
Storage::Version{},
IsAutoVersion::No},
ModuleExportedImport{exampleModuleId,
quickModuleId,
Storage::Version{},
IsAutoVersion::No},
ModuleExportedImport{exampleCppNativeModuleId,
quickCppNativeModuleId,
Storage::Version{},
IsAutoVersion::No})),
Field(&SynchronizationPackage::updatedModuleIds,
ElementsAre(exampleModuleId)))));
updater.update(qmlDirs, {});
}
} // namespace } // namespace