QmlDesigner: Add kind to module id

In some cases we need to find out what kind a module is.

Task-number: QTCREATORBUG-30735
Change-Id: Ibd5a70ee6fe0f619009fd645f444d3fbb2fd6e01
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Marco Bubke
2024-04-24 20:29:13 +02:00
parent d6065db983
commit 05e5aa7f0c
32 changed files with 753 additions and 565 deletions

View File

@@ -16,6 +16,7 @@ namespace Synchronization = Storage::Synchronization;
using QmlDesigner::ModuleId;
using QmlDesigner::SourceContextId;
using QmlDesigner::SourceId;
using QmlDesigner::Storage::ModuleKind;
MATCHER_P(HasPrototype, prototype, std::string(negation ? "isn't " : "is ") + PrintToString(prototype))
{
@@ -151,7 +152,7 @@ protected:
SourceId qmlFileSourceId{sourcePathCache.sourceId("/path/to/qmlfile.qml")};
SourceContextId qmlFileSourceContextId{sourcePathCache.sourceContextId(qmlFileSourceId)};
Utils::PathString directoryPath{sourcePathCache.sourceContextPath(qmlFileSourceContextId)};
ModuleId directoryModuleId{storage.moduleId(directoryPath)};
ModuleId directoryModuleId{storage.moduleId(directoryPath, ModuleKind::PathLibrary)};
};
TEST_F(QmlDocumentParser, prototype)
@@ -163,7 +164,7 @@ TEST_F(QmlDocumentParser, prototype)
TEST_F(QmlDocumentParser, qualified_prototype)
{
auto exampleModuleId = storage.moduleId("Example");
auto exampleModuleId = storage.moduleId("Example", ModuleKind::QmlLibrary);
QString text = R"(import Example 2.1 as Example
Example.Item{})";
@@ -187,7 +188,7 @@ TEST_F(QmlDocumentParser, properties)
TEST_F(QmlDocumentParser, qualified_properties)
{
auto exampleModuleId = storage.moduleId("Example");
auto exampleModuleId = storage.moduleId("Example", ModuleKind::QmlLibrary);
auto type = parser.parse(R"(import Example 2.1 as Example
Item{ property Example.Foo foo})",
@@ -222,7 +223,7 @@ TEST_F(QmlDocumentParser, enumeration_in_properties)
TEST_F(QmlDocumentParser, qualified_enumeration_in_properties)
{
auto exampleModuleId = storage.moduleId("Example");
auto exampleModuleId = storage.moduleId("Example", ModuleKind::QmlLibrary);
auto type = parser.parse(R"(import Example 2.1 as Example
Item{ property Example.Enumeration.Foo foo})",
@@ -242,9 +243,9 @@ TEST_F(QmlDocumentParser, qualified_enumeration_in_properties)
TEST_F(QmlDocumentParser, imports)
{
ModuleId fooDirectoryModuleId = storage.moduleId("/path/foo");
ModuleId qmlModuleId = storage.moduleId("QML");
ModuleId qtQuickModuleId = storage.moduleId("QtQuick");
ModuleId fooDirectoryModuleId = storage.moduleId("/path/foo", ModuleKind::PathLibrary);
ModuleId qmlModuleId = storage.moduleId("QML", ModuleKind::QmlLibrary);
ModuleId qtQuickModuleId = storage.moduleId("QtQuick", ModuleKind::QmlLibrary);
auto type = parser.parse(R"(import QtQuick
import "../foo"
@@ -263,9 +264,9 @@ TEST_F(QmlDocumentParser, imports)
TEST_F(QmlDocumentParser, imports_with_version)
{
ModuleId fooDirectoryModuleId = storage.moduleId("/path/foo");
ModuleId qmlModuleId = storage.moduleId("QML");
ModuleId qtQuickModuleId = storage.moduleId("QtQuick");
ModuleId fooDirectoryModuleId = storage.moduleId("/path/foo", ModuleKind::PathLibrary);
ModuleId qmlModuleId = storage.moduleId("QML", ModuleKind::QmlLibrary);
ModuleId qtQuickModuleId = storage.moduleId("QtQuick", ModuleKind::QmlLibrary);
auto type = parser.parse(R"(import QtQuick 2.1
import "../foo"
@@ -284,8 +285,8 @@ TEST_F(QmlDocumentParser, imports_with_version)
TEST_F(QmlDocumentParser, imports_with_explict_directory)
{
ModuleId qmlModuleId = storage.moduleId("QML");
ModuleId qtQuickModuleId = storage.moduleId("QtQuick");
ModuleId qmlModuleId = storage.moduleId("QML", ModuleKind::QmlLibrary);
ModuleId qtQuickModuleId = storage.moduleId("QtQuick", ModuleKind::QmlLibrary);
auto type = parser.parse(R"(import QtQuick
import "../to"
@@ -358,10 +359,10 @@ TEST_F(QmlDocumentParser, enumeration)
TEST_F(QmlDocumentParser, DISABLED_duplicate_imports_are_removed)
{
ModuleId fooDirectoryModuleId = storage.moduleId("/path/foo");
ModuleId qmlModuleId = storage.moduleId("QML");
ModuleId qtQmlModuleId = storage.moduleId("QtQml");
ModuleId qtQuickModuleId = storage.moduleId("QtQuick");
ModuleId fooDirectoryModuleId = storage.moduleId("/path/foo", ModuleKind::PathLibrary);
ModuleId qmlModuleId = storage.moduleId("QML", ModuleKind::QmlLibrary);
ModuleId qtQmlModuleId = storage.moduleId("QtQml", ModuleKind::QmlLibrary);
ModuleId qtQuickModuleId = storage.moduleId("QtQuick", ModuleKind::QmlLibrary);
auto type = parser.parse(R"(import QtQuick
import "../foo"
@@ -497,7 +498,7 @@ TEST_F(QmlDocumentParser, alias_on_list_property)
TEST_F(QmlDocumentParser, qualified_list_property)
{
auto exampleModuleId = storage.moduleId("Example");
auto exampleModuleId = storage.moduleId("Example", ModuleKind::QmlLibrary);
auto type = parser.parse(R"(import Example 2.1 as Example
Item{
property list<Example.Foo> foos