forked from qt-creator/qt-creator
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:
@@ -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,
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user