forked from qt-creator/qt-creator
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:
@@ -2205,17 +2205,20 @@ private:
|
||||
|
||||
table.addUniqueIndex({sourceIdColumn,
|
||||
moduleIdColumn,
|
||||
kindColumn,
|
||||
sourceModuleIdColumn,
|
||||
moduleExportedModuleIdColumn},
|
||||
"majorVersion IS NULL AND minorVersion IS NULL");
|
||||
table.addUniqueIndex({sourceIdColumn,
|
||||
moduleIdColumn,
|
||||
kindColumn,
|
||||
sourceModuleIdColumn,
|
||||
majorVersionColumn,
|
||||
moduleExportedModuleIdColumn},
|
||||
"majorVersion IS NOT NULL AND minorVersion IS NULL");
|
||||
table.addUniqueIndex({sourceIdColumn,
|
||||
moduleIdColumn,
|
||||
kindColumn,
|
||||
sourceModuleIdColumn,
|
||||
majorVersionColumn,
|
||||
minorVersionColumn,
|
||||
|
@@ -4096,4 +4096,34 @@ TEST_F(ProjectStorage, ModuleExportedImportPreventCollisionIfModuleIsIndirectlyR
|
||||
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
|
||||
|
Reference in New Issue
Block a user