aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h12
-rw-r--r--src/plugins/qmldesigner/designercore/projectstorage/projectstoragetypes.h7
-rw-r--r--tests/unit/unittest/projectstorage-test.cpp32
3 files changed, 46 insertions, 5 deletions
diff --git a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h
index 734c9366d2..72ff942af2 100644
--- a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h
+++ b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h
@@ -1374,10 +1374,14 @@ private:
Storage::Version{majorVersion, minorVersion},
import.sourceId};
- insertDocumentImport(additionImport,
- Storage::ImportKind::ModuleExportedImport,
- import.moduleId,
- ModuleExportedImportId{moduleExportedImportId});
+ auto exportedImportKind = importKind == Storage::ImportKind::Import
+ ? Storage::ImportKind::ModuleExportedImport
+ : Storage::ImportKind::ModuleExportedModuleDependency;
+
+ insertDocumentImport(additionImport,
+ exportedImportKind,
+ import.moduleId,
+ ModuleExportedImportId{moduleExportedImportId});
return Sqlite::CallbackControl::Continue;
};
diff --git a/src/plugins/qmldesigner/designercore/projectstorage/projectstoragetypes.h b/src/plugins/qmldesigner/designercore/projectstorage/projectstoragetypes.h
index 041f278f0a..4fd92a9475 100644
--- a/src/plugins/qmldesigner/designercore/projectstorage/projectstoragetypes.h
+++ b/src/plugins/qmldesigner/designercore/projectstorage/projectstoragetypes.h
@@ -152,7 +152,12 @@ inline int operator<(IsQualified first, IsQualified second)
return static_cast<int>(first) < static_cast<int>(second);
}
-enum class ImportKind : char { Import, ModuleDependency, ModuleExportedImport };
+enum class ImportKind : char {
+ Import,
+ ModuleDependency,
+ ModuleExportedImport,
+ ModuleExportedModuleDependency
+};
class Import
{
diff --git a/tests/unit/unittest/projectstorage-test.cpp b/tests/unit/unittest/projectstorage-test.cpp
index 4ae429a3ff..0f9c4d35ee 100644
--- a/tests/unit/unittest/projectstorage-test.cpp
+++ b/tests/unit/unittest/projectstorage-test.cpp
@@ -4126,4 +4126,36 @@ TEST_F(ProjectStorage, DistinguishBetweenImportKinds)
IsExportedType(qtQuickNativeModuleId, "QQuickItem"))))));
}
+TEST_F(ProjectStorage, ModuleExportedImportDistinguishBetweenDependencyAndImportReExports)
+{
+ auto package{createModuleExportedImportSynchronizationPackage()};
+ package.moduleDependencies.emplace_back(qtQuick3DModuleId, Storage::Version{1}, sourceId4);
+
+ storage.synchronize(std::move(package));
+
+ ASSERT_THAT(storage.fetchTypes(),
+ UnorderedElementsAre(
+ AllOf(IsStorageType(sourceId1,
+ "QQuickItem",
+ fetchTypeId(sourceId2, "QObject"),
+ TypeAccessSemantics::Reference),
+ Field(&Storage::Type::exportedTypes,
+ UnorderedElementsAre(IsExportedType(qtQuickModuleId, "Item")))),
+ AllOf(IsStorageType(sourceId2, "QObject", TypeId{}, TypeAccessSemantics::Reference),
+ Field(&Storage::Type::exportedTypes,
+ UnorderedElementsAre(IsExportedType(qmlModuleId, "Object")))),
+ AllOf(IsStorageType(sourceId3,
+ "QQuickItem3d",
+ fetchTypeId(sourceId1, "QQuickItem"),
+ TypeAccessSemantics::Reference),
+ Field(&Storage::Type::exportedTypes,
+ UnorderedElementsAre(IsExportedType(qtQuick3DModuleId, "Item3D")))),
+ AllOf(IsStorageType(sourceId4,
+ "MyItem",
+ fetchTypeId(sourceId2, "QObject"),
+ TypeAccessSemantics::Reference),
+ Field(&Storage::Type::exportedTypes,
+ UnorderedElementsAre(IsExportedType(myModuleModuleId, "MyItem"))))));
+}
+
} // namespace