QmlDesigner: Distinguish between different import kinds

There can be normal imports, module dependencies and imports from
reexported imports.

Change-Id: I67e28f0676eb0b0d04fea1406954c9f2d4032e28
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Marco Bubke
2022-02-16 16:42:23 +01:00
parent 3225cd92eb
commit 3ece40c31e
2 changed files with 33 additions and 0 deletions

View File

@@ -2205,17 +2205,20 @@ private:
table.addUniqueIndex({sourceIdColumn, table.addUniqueIndex({sourceIdColumn,
moduleIdColumn, moduleIdColumn,
kindColumn,
sourceModuleIdColumn, sourceModuleIdColumn,
moduleExportedModuleIdColumn}, moduleExportedModuleIdColumn},
"majorVersion IS NULL AND minorVersion IS NULL"); "majorVersion IS NULL AND minorVersion IS NULL");
table.addUniqueIndex({sourceIdColumn, table.addUniqueIndex({sourceIdColumn,
moduleIdColumn, moduleIdColumn,
kindColumn,
sourceModuleIdColumn, sourceModuleIdColumn,
majorVersionColumn, majorVersionColumn,
moduleExportedModuleIdColumn}, moduleExportedModuleIdColumn},
"majorVersion IS NOT NULL AND minorVersion IS NULL"); "majorVersion IS NOT NULL AND minorVersion IS NULL");
table.addUniqueIndex({sourceIdColumn, table.addUniqueIndex({sourceIdColumn,
moduleIdColumn, moduleIdColumn,
kindColumn,
sourceModuleIdColumn, sourceModuleIdColumn,
majorVersionColumn, majorVersionColumn,
minorVersionColumn, minorVersionColumn,

View File

@@ -4096,4 +4096,34 @@ TEST_F(ProjectStorage, ModuleExportedImportPreventCollisionIfModuleIsIndirectlyR
UnorderedElementsAre(IsExportedType(myModuleModuleId, "MyItem")))))); UnorderedElementsAre(IsExportedType(myModuleModuleId, "MyItem"))))));
} }
TEST_F(ProjectStorage, DistinguishBetweenImportKinds)
{
ModuleId qml1ModuleId{storage.moduleId("Qml1")};
ModuleId qml11ModuleId{storage.moduleId("Qml11")};
auto package{createSimpleSynchronizationPackage()};
package.moduleDependencies.emplace_back(qmlModuleId, Storage::Version{}, sourceId1);
package.moduleDependencies.emplace_back(qml1ModuleId, Storage::Version{1}, sourceId1);
package.imports.emplace_back(qml1ModuleId, Storage::Version{}, sourceId1);
package.moduleDependencies.emplace_back(qml11ModuleId, Storage::Version{1, 1}, sourceId1);
package.imports.emplace_back(qml11ModuleId, Storage::Version{1, 1}, sourceId1);
storage.synchronize(std::move(package));
ASSERT_THAT(
storage.fetchTypes(),
UnorderedElementsAre(
AllOf(IsStorageType(sourceId2, "QObject", TypeId{}, TypeAccessSemantics::Reference),
Field(&Storage::Type::exportedTypes,
UnorderedElementsAre(IsExportedType(qmlModuleId, "Object"),
IsExportedType(qmlModuleId, "Obj"),
IsExportedType(qmlNativeModuleId, "QObject")))),
AllOf(IsStorageType(sourceId1,
"QQuickItem",
fetchTypeId(sourceId2, "QObject"),
TypeAccessSemantics::Reference),
Field(&Storage::Type::exportedTypes,
UnorderedElementsAre(IsExportedType(qtQuickModuleId, "Item"),
IsExportedType(qtQuickNativeModuleId, "QQuickItem"))))));
}
} // namespace } // namespace