QmlDesigner: Introduce different modules for cpp, qml and directories

There are now different modules for qml, cpp and directory imports.
Cpp imports are qml import append by "-cppnative".

Task-number: QDS-5196
Change-Id: I599b224892c5ada0224a765d0bde8b32de20b061
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Marco Bubke
2021-10-19 14:42:28 +02:00
committed by Tim Jenssen
parent cb946ec307
commit b4fcd05451
12 changed files with 86 additions and 81 deletions

View File

@@ -308,7 +308,10 @@ public:
&sourceId); &sourceId);
} }
SourceIds fetchSourceDependencieIds(SourceId sourceId) const override { return {}; } Storage::ProjectDatas fetchProjectDatas(SourceId sourceId) const override
{
return Storage::ProjectDatas{};
}
private: private:
class ModuleStorageAdapter class ModuleStorageAdapter

View File

@@ -42,7 +42,7 @@ public:
virtual ModuleId moduleId(Utils::SmallStringView name) = 0; virtual ModuleId moduleId(Utils::SmallStringView name) = 0;
virtual FileStatus fetchFileStatus(SourceId sourceId) const = 0; virtual FileStatus fetchFileStatus(SourceId sourceId) const = 0;
virtual SourceIds fetchSourceDependencieIds(SourceId sourceId) const = 0; virtual Storage::ProjectDatas fetchProjectDatas(SourceId sourceId) const = 0;
protected: protected:
~ProjectStorageInterface() = default; ~ProjectStorageInterface() = default;

View File

@@ -717,4 +717,13 @@ public:
using Types = std::vector<Type>; using Types = std::vector<Type>;
class ProjectData
{
public:
ModuleId extraModuleId;
SourceId sourceId;
};
using ProjectDatas = std::vector<ProjectData>;
} // namespace QmlDesigner::Storage } // namespace QmlDesigner::Storage

View File

@@ -70,10 +70,10 @@ void ProjectUpdater::update()
SourceContextId directoryId = m_pathCache.sourceContextId(qmlDirSourceId); SourceContextId directoryId = m_pathCache.sourceContextId(qmlDirSourceId);
ModuleId moduleId = m_projectStorage.moduleId(Utils::PathString{parser.typeNamespace()}); Utils::PathString moduleName{parser.typeNamespace()};
ModuleId moduleId = m_projectStorage.moduleId(moduleName);
parseTypeInfos( parseTypeInfos(parser.typeInfos(), directoryId, imports, types, sourceIds, fileStatuses);
parser.typeInfos(), directoryId, moduleId, imports, types, sourceIds, fileStatuses);
parseQmlComponents(createComponentReferences(parser.components()), parseQmlComponents(createComponentReferences(parser.components()),
directoryId, directoryId,
moduleId, moduleId,
@@ -84,13 +84,8 @@ void ProjectUpdater::update()
break; break;
} }
case FileState::NotChanged: { case FileState::NotChanged: {
SourceIds qmltypesSourceIds = m_projectStorage.fetchSourceDependencieIds(qmlDirSourceId); auto qmlProjectDatas = m_projectStorage.fetchProjectDatas(qmlDirSourceId);
parseTypeInfos(ModuleId{&qmlDirSourceId}, parseTypeInfos(qmlProjectDatas, imports, types, sourceIds, fileStatuses);
qmltypesSourceIds,
imports,
types,
sourceIds,
fileStatuses);
break; break;
} }
case FileState::NotExists: { case FileState::NotExists: {
@@ -110,7 +105,6 @@ void ProjectUpdater::pathsWithIdsChanged(const std::vector<IdPaths> &idPaths) {}
void ProjectUpdater::parseTypeInfos(const QStringList &typeInfos, void ProjectUpdater::parseTypeInfos(const QStringList &typeInfos,
SourceContextId directoryId, SourceContextId directoryId,
ModuleId moduleId,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceIds &sourceIds, SourceIds &sourceIds,
@@ -122,36 +116,36 @@ void ProjectUpdater::parseTypeInfos(const QStringList &typeInfos,
SourceId sourceId = m_pathCache.sourceId(directoryId, Utils::SmallString{typeInfo}); SourceId sourceId = m_pathCache.sourceId(directoryId, Utils::SmallString{typeInfo});
QString qmltypesPath = directory + "/" + typeInfo; QString qmltypesPath = directory + "/" + typeInfo;
parseTypeInfo(sourceId, moduleId, qmltypesPath, imports, types, sourceIds, fileStatuses); Storage::ProjectData projectData{ModuleId{}, sourceId};
parseTypeInfo(projectData, qmltypesPath, imports, types, sourceIds, fileStatuses);
} }
} }
void ProjectUpdater::parseTypeInfos(ModuleId moduleId, void ProjectUpdater::parseTypeInfos(const Storage::ProjectDatas &projectDatas,
const SourceIds &qmltypesSourceIds,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceIds &sourceIds, SourceIds &sourceIds,
FileStatuses &fileStatuses) FileStatuses &fileStatuses)
{ {
for (SourceId sourceId : qmltypesSourceIds) { for (const Storage::ProjectData &projectData : projectDatas) {
QString qmltypesPath = m_pathCache.sourcePath(sourceId).toQString(); QString qmltypesPath = m_pathCache.sourcePath(projectData.sourceId).toQString();
parseTypeInfo(sourceId, moduleId, qmltypesPath, imports, types, sourceIds, fileStatuses); parseTypeInfo(projectData, qmltypesPath, imports, types, sourceIds, fileStatuses);
} }
} }
void ProjectUpdater::parseTypeInfo(SourceId sourceId, void ProjectUpdater::parseTypeInfo(const Storage::ProjectData &projectData,
ModuleId moduleId,
const QString &qmltypesPath, const QString &qmltypesPath,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceIds &sourceIds, SourceIds &sourceIds,
FileStatuses &fileStatuses) FileStatuses &fileStatuses)
{ {
if (fileState(sourceId, fileStatuses) == FileState::Changed) { if (fileState(projectData.sourceId, fileStatuses) == FileState::Changed) {
sourceIds.push_back(sourceId); sourceIds.push_back(projectData.sourceId);
const auto content = m_fileSystem.contentAsQString(qmltypesPath); const auto content = m_fileSystem.contentAsQString(qmltypesPath);
m_qmlTypesParser.parse(content, imports, types, sourceId, moduleId); m_qmlTypesParser.parse(content, imports, types, projectData);
} }
} }

View File

@@ -88,19 +88,16 @@ private:
void parseTypeInfos(const QStringList &typeInfos, void parseTypeInfos(const QStringList &typeInfos,
SourceContextId directoryId, SourceContextId directoryId,
ModuleId moduleId,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceIds &sourceIds, SourceIds &sourceIds,
FileStatuses &fileStatuses); FileStatuses &fileStatuses);
void parseTypeInfos(ModuleId moduleId, void parseTypeInfos(const Storage::ProjectDatas &projectDatas,
const SourceIds &qmltypesSourceIds,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceIds &sourceIds, SourceIds &sourceIds,
FileStatuses &fileStatuses); FileStatuses &fileStatuses);
void parseTypeInfo(SourceId sourceId, void parseTypeInfo(const Storage::ProjectData &projectData,
ModuleId moduleId,
const QString &qmltypesPath, const QString &qmltypesPath,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,

View File

@@ -43,7 +43,6 @@ namespace QmlDesigner {
namespace QmlDom = QQmlJS::Dom; namespace QmlDom = QQmlJS::Dom;
namespace { namespace {
void addType(const QQmlJSScope::Ptr &object, Storage::Types &types) {}
void appendImports(Storage::Imports &imports, void appendImports(Storage::Imports &imports,
const QString &dependency, const QString &dependency,
@@ -55,8 +54,6 @@ void appendImports(Storage::Imports &imports,
}); });
Utils::PathString moduleName{QStringView(dependency.begin(), spaceFound)}; Utils::PathString moduleName{QStringView(dependency.begin(), spaceFound)};
ModuleId moduleId = storage.moduleId(moduleName);
moduleName.append("-cppnative"); moduleName.append("-cppnative");
ModuleId cppModuleId = storage.moduleId(moduleName); ModuleId cppModuleId = storage.moduleId(moduleName);
@@ -84,7 +81,6 @@ void appendImports(Storage::Imports &imports,
version.minor.value = QStringView(minorVersionFound, minorVersionEnd).toInt(); version.minor.value = QStringView(minorVersionFound, minorVersionEnd).toInt();
} }
imports.emplace_back(moduleId, version, sourceId);
imports.emplace_back(cppModuleId, version, sourceId); imports.emplace_back(cppModuleId, version, sourceId);
} }
@@ -97,7 +93,6 @@ void addImports(Storage::Imports &imports,
appendImports(imports, dependency, sourceId, storage); appendImports(imports, dependency, sourceId, storage);
imports.emplace_back(storage.moduleId("QML"), Storage::Version{}, sourceId); imports.emplace_back(storage.moduleId("QML"), Storage::Version{}, sourceId);
imports.emplace_back(storage.moduleId("QtQml"), Storage::Version{}, sourceId);
imports.emplace_back(storage.moduleId("QtQml-cppnative"), Storage::Version{}, sourceId); imports.emplace_back(storage.moduleId("QtQml-cppnative"), Storage::Version{}, sourceId);
} }
@@ -122,17 +117,22 @@ Storage::Version createVersion(QTypeRevision qmlVersion)
return Storage::Version{qmlVersion.majorVersion(), qmlVersion.minorVersion()}; return Storage::Version{qmlVersion.majorVersion(), qmlVersion.minorVersion()};
} }
Storage::ExportedTypes createExports(ModuleId moduleId, const QList<QQmlJSScope::Export> &qmlExports) Storage::ExportedTypes createExports(const QList<QQmlJSScope::Export> &qmlExports,
const QQmlJSScope &component,
QmlTypesParser::ProjectStorage &storage,
ModuleId cppModuleId)
{ {
Storage::ExportedTypes exportedTypes; Storage::ExportedTypes exportedTypes;
exportedTypes.reserve(Utils::usize(qmlExports)); exportedTypes.reserve(Utils::usize(qmlExports));
for (const QQmlJSScope::Export &qmlExport : qmlExports) { for (const QQmlJSScope::Export &qmlExport : qmlExports) {
exportedTypes.emplace_back(moduleId, exportedTypes.emplace_back(storage.moduleId(Utils::SmallString{qmlExport.package()}),
Utils::SmallString{qmlExport.type()}, Utils::SmallString{qmlExport.type()},
createVersion(qmlExport.version())); createVersion(qmlExport.version()));
} }
exportedTypes.emplace_back(cppModuleId, Utils::SmallString{component.internalName()});
return exportedTypes; return exportedTypes;
} }
@@ -257,14 +257,18 @@ Storage::EnumerationDeclarations createEnumeration(const QHash<QString, QQmlJSMe
return enumerationDeclarations; return enumerationDeclarations;
} }
void addType(Storage::Types &types, SourceId sourceId, ModuleId moduleId, const QQmlJSScope &component) void addType(Storage::Types &types,
SourceId sourceId,
ModuleId cppModuleId,
const QQmlJSScope &component,
QmlTypesParser::ProjectStorage &storage)
{ {
auto [functionsDeclarations, signalDeclarations] = createFunctionAndSignals(component.ownMethods()); auto [functionsDeclarations, signalDeclarations] = createFunctionAndSignals(component.ownMethods());
types.emplace_back(Utils::SmallString{component.internalName()}, types.emplace_back(Utils::SmallString{component.internalName()},
Storage::NativeType{Utils::SmallString{component.baseTypeName()}}, Storage::NativeType{Utils::SmallString{component.baseTypeName()}},
createTypeAccessSemantics(component.accessSemantics()), createTypeAccessSemantics(component.accessSemantics()),
sourceId, sourceId,
createExports(moduleId, component.exports()), createExports(component.exports(), component, storage, cppModuleId),
createProperties(component.ownProperties()), createProperties(component.ownProperties()),
std::move(functionsDeclarations), std::move(functionsDeclarations),
std::move(signalDeclarations), std::move(signalDeclarations),
@@ -272,14 +276,14 @@ void addType(Storage::Types &types, SourceId sourceId, ModuleId moduleId, const
} }
void addTypes(Storage::Types &types, void addTypes(Storage::Types &types,
SourceId sourceId, const Storage::ProjectData &projectData,
ModuleId moduleId, const QHash<QString, QQmlJSScope::Ptr> &objects,
const QHash<QString, QQmlJSScope::Ptr> &objects) QmlTypesParser::ProjectStorage &storage)
{ {
types.reserve(Utils::usize(objects) + types.size()); types.reserve(Utils::usize(objects) + types.size());
for (const auto &object : objects) for (const auto &object : objects)
addType(types, sourceId, moduleId, *object.get()); addType(types, projectData.sourceId, projectData.extraModuleId, *object.get(), storage);
} }
} // namespace } // namespace
@@ -287,8 +291,7 @@ void addTypes(Storage::Types &types,
void QmlTypesParser::parse(const QString &sourceContent, void QmlTypesParser::parse(const QString &sourceContent,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceId sourceId, const Storage::ProjectData &projectData)
ModuleId moduleId)
{ {
QQmlJSTypeDescriptionReader reader({}, sourceContent); QQmlJSTypeDescriptionReader reader({}, sourceContent);
QHash<QString, QQmlJSScope::Ptr> components; QHash<QString, QQmlJSScope::Ptr> components;
@@ -297,8 +300,8 @@ void QmlTypesParser::parse(const QString &sourceContent,
if (!isValid) if (!isValid)
throw CannotParseQmlTypesFile{}; throw CannotParseQmlTypesFile{};
addImports(imports, sourceId, dependencies, m_storage); addImports(imports, projectData.sourceId, dependencies, m_storage);
addTypes(types, sourceId, moduleId, components); addTypes(types, projectData, components, m_storage);
} }
} // namespace QmlDesigner } // namespace QmlDesigner

View File

@@ -54,8 +54,7 @@ public:
void parse(const QString &sourceContent, void parse(const QString &sourceContent,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceId sourceId, const Storage::ProjectData &projectData) override;
ModuleId moduleId) override;
private: private:
PathCache &m_pathCache; PathCache &m_pathCache;

View File

@@ -37,8 +37,7 @@ public:
virtual void parse(const QString &sourceContent, virtual void parse(const QString &sourceContent,
Storage::Imports &imports, Storage::Imports &imports,
Storage::Types &types, Storage::Types &types,
SourceId sourceId, const Storage::ProjectData &projectData)
ModuleId moduleId)
= 0; = 0;
protected: protected:

View File

@@ -51,8 +51,8 @@ public:
(QmlDesigner::SourceId sourceId), (QmlDesigner::SourceId sourceId),
(const, override)); (const, override));
MOCK_METHOD(QmlDesigner::SourceIds, MOCK_METHOD(QmlDesigner::Storage::ProjectDatas,
fetchSourceDependencieIds, fetchProjectDatas,
(QmlDesigner::SourceId sourceId), (QmlDesigner::SourceId sourceId),
(const, override)); (const, override));

View File

@@ -126,8 +126,10 @@ public:
ON_CALL(projectStorageMock, fetchFileStatus(Eq(qmlDirPathSourceId))) ON_CALL(projectStorageMock, fetchFileStatus(Eq(qmlDirPathSourceId)))
.WillByDefault(Return(FileStatus{qmlDirPathSourceId, 2, 421})); .WillByDefault(Return(FileStatus{qmlDirPathSourceId, 2, 421}));
ON_CALL(projectStorageMock, fetchSourceDependencieIds(Eq(qmlDirPathSourceId))) ON_CALL(projectStorageMock, fetchProjectDatas(Eq(qmlDirPathSourceId)))
.WillByDefault(Return(QmlDesigner::SourceIds{qmltypesPathSourceId, qmltypes2PathSourceId})); .WillByDefault(
Return(QmlDesigner::Storage::ProjectDatas{{ModuleId{}, qmltypesPathSourceId},
{ModuleId{}, qmltypes2PathSourceId}}));
QString qmldir{"module Example\ntypeinfo example.qmltypes\n"}; QString qmldir{"module Example\ntypeinfo example.qmltypes\n"};
ON_CALL(projectManagerMock, qtQmlDirs()).WillByDefault(Return(QStringList{"/path/qmldir"})); ON_CALL(projectManagerMock, qtQmlDirs()).WillByDefault(Return(QStringList{"/path/qmldir"}));
@@ -300,8 +302,8 @@ TEST_F(ProjectStorageUpdater, ParseQmlTypes)
ON_CALL(fileSystemMock, contentAsQString(Eq(QString("/path/example2.qmltypes")))) ON_CALL(fileSystemMock, contentAsQString(Eq(QString("/path/example2.qmltypes"))))
.WillByDefault(Return(qmltypes2)); .WillByDefault(Return(qmltypes2));
EXPECT_CALL(qmlTypesParserMock, parse(qmltypes, _, _, _, _)); EXPECT_CALL(qmlTypesParserMock, parse(qmltypes, _, _, _));
EXPECT_CALL(qmlTypesParserMock, parse(qmltypes2, _, _, _, _)); EXPECT_CALL(qmlTypesParserMock, parse(qmltypes2, _, _, _));
updater.update(); updater.update();
} }
@@ -328,8 +330,8 @@ TEST_F(ProjectStorageUpdater, SynchronizeQmlTypes)
QString qmltypes{"Module {\ndependencies: []}"}; QString qmltypes{"Module {\ndependencies: []}"};
ON_CALL(fileSystemMock, contentAsQString(Eq(QString("/path/example.qmltypes")))) ON_CALL(fileSystemMock, contentAsQString(Eq(QString("/path/example.qmltypes"))))
.WillByDefault(Return(qmltypes)); .WillByDefault(Return(qmltypes));
ON_CALL(qmlTypesParserMock, parse(qmltypes, _, _, _, _)) ON_CALL(qmlTypesParserMock, parse(qmltypes, _, _, _))
.WillByDefault([&](auto, auto &imports, auto &types, auto, auto) { .WillByDefault([&](auto, auto &imports, auto &types, auto) {
types.push_back(objectType); types.push_back(objectType);
imports.push_back(import); imports.push_back(import);
}); });
@@ -350,9 +352,8 @@ TEST_F(ProjectStorageUpdater, SynchronizeQmlTypesAreEmptyIfFileDoesNotChanged)
QString qmltypes{"Module {\ndependencies: []}"}; QString qmltypes{"Module {\ndependencies: []}"};
ON_CALL(fileSystemMock, contentAsQString(Eq(QString("/path/example.qmltypes")))) ON_CALL(fileSystemMock, contentAsQString(Eq(QString("/path/example.qmltypes"))))
.WillByDefault(Return(qmltypes)); .WillByDefault(Return(qmltypes));
ON_CALL(qmlTypesParserMock, parse(qmltypes, _, _, _, _)) ON_CALL(qmlTypesParserMock, parse(qmltypes, _, _, _))
.WillByDefault( .WillByDefault([&](auto, auto &, auto &types, auto) { types.push_back(objectType); });
[&](auto, auto &imports, auto &types, auto, auto) { types.push_back(objectType); });
ON_CALL(fileSystemMock, fileStatus(Eq(qmltypesPathSourceId))) ON_CALL(fileSystemMock, fileStatus(Eq(qmltypesPathSourceId)))
.WillByDefault(Return(FileStatus{qmltypesPathSourceId, 2, 421})); .WillByDefault(Return(FileStatus{qmltypesPathSourceId, 2, 421}));
ON_CALL(fileSystemMock, fileStatus(Eq(qmltypes2PathSourceId))) ON_CALL(fileSystemMock, fileStatus(Eq(qmltypes2PathSourceId)))

View File

@@ -173,6 +173,8 @@ protected:
Storage::Imports imports; Storage::Imports imports;
Storage::Types types; Storage::Types types;
SourceId qmltypesFileSourceId{sourcePathCache.sourceId("path/to/types.qmltypes")}; SourceId qmltypesFileSourceId{sourcePathCache.sourceId("path/to/types.qmltypes")};
QmlDesigner::Storage::ProjectData projectData{storage.moduleId("QtQml-cppnative"),
qmltypesFileSourceId};
SourceContextId qmltypesFileSourceContextId{sourcePathCache.sourceContextId(qmltypesFileSourceId)}; SourceContextId qmltypesFileSourceContextId{sourcePathCache.sourceContextId(qmltypesFileSourceId)};
ModuleId directoryModuleId{storage.moduleId("path/to/")}; ModuleId directoryModuleId{storage.moduleId("path/to/")};
}; };
@@ -184,21 +186,17 @@ TEST_F(QmlTypesParser, Imports)
dependencies: dependencies:
["QtQuick 2.15", "QtQuick.Window 2.1", "QtFoo 6"]})"}; ["QtQuick 2.15", "QtQuick.Window 2.1", "QtFoo 6"]})"};
parser.parse(source, imports, types, qmltypesFileSourceId, directoryModuleId); parser.parse(source, imports, types, projectData);
ASSERT_THAT( ASSERT_THAT(
imports, imports,
UnorderedElementsAre( UnorderedElementsAre(
IsImport(storage.moduleId("QML"), Storage::Version{}, qmltypesFileSourceId), IsImport(storage.moduleId("QML"), Storage::Version{}, qmltypesFileSourceId),
IsImport(storage.moduleId("QtQml"), Storage::Version{}, qmltypesFileSourceId),
IsImport(storage.moduleId("QtQml-cppnative"), Storage::Version{}, qmltypesFileSourceId), IsImport(storage.moduleId("QtQml-cppnative"), Storage::Version{}, qmltypesFileSourceId),
IsImport(storage.moduleId("QtQuick"), Storage::Version{2, 15}, qmltypesFileSourceId),
IsImport(storage.moduleId("QtQuick-cppnative"), Storage::Version{2, 15}, qmltypesFileSourceId), IsImport(storage.moduleId("QtQuick-cppnative"), Storage::Version{2, 15}, qmltypesFileSourceId),
IsImport(storage.moduleId("QtQuick.Window"), Storage::Version{2, 1}, qmltypesFileSourceId),
IsImport(storage.moduleId("QtQuick.Window-cppnative"), IsImport(storage.moduleId("QtQuick.Window-cppnative"),
Storage::Version{2, 1}, Storage::Version{2, 1},
qmltypesFileSourceId), qmltypesFileSourceId),
IsImport(storage.moduleId("QtFoo"), Storage::Version{6}, qmltypesFileSourceId),
IsImport(storage.moduleId("QtFoo-cppnative"), Storage::Version{6}, qmltypesFileSourceId))); IsImport(storage.moduleId("QtFoo-cppnative"), Storage::Version{6}, qmltypesFileSourceId)));
} }
@@ -210,7 +208,7 @@ TEST_F(QmlTypesParser, Types)
Component { name: "QQmlComponent" Component { name: "QQmlComponent"
prototype: "QObject"}})"}; prototype: "QObject"}})"};
parser.parse(source, imports, types, qmltypesFileSourceId, directoryModuleId); parser.parse(source, imports, types, projectData);
ASSERT_THAT(types, ASSERT_THAT(types,
UnorderedElementsAre(IsType("QObject", UnorderedElementsAre(IsType("QObject",
@@ -228,17 +226,20 @@ TEST_F(QmlTypesParser, ExportedTypes)
QString source{R"(import QtQuick.tooling 1.2 QString source{R"(import QtQuick.tooling 1.2
Module{ Module{
Component { name: "QObject" Component { name: "QObject"
exports: ["QtQml/QtObject 1.0", "QtQml/QtObject 2.1"] exports: ["QML/QtObject 1.0", "QtQml/QtObject 2.1"]
}})"}; }})"};
ModuleId qmlModuleId = storage.moduleId("QML");
ModuleId qtQmlModuleId = storage.moduleId("QtQml");
ModuleId qtQmlNativeModuleId = storage.moduleId("QtQml-cppnative");
parser.parse(source, imports, types, qmltypesFileSourceId, directoryModuleId); parser.parse(source, imports, types, projectData);
ASSERT_THAT( ASSERT_THAT(types,
types, ElementsAre(Field(
ElementsAre( &Storage::Type::exportedTypes,
Field(&Storage::Type::exportedTypes, ElementsAre(IsExportedType(qmlModuleId, "QtObject", Storage::Version{1, 0}),
ElementsAre(IsExportedType(directoryModuleId, "QtObject", Storage::Version{1, 0}), IsExportedType(qtQmlModuleId, "QtObject", Storage::Version{2, 1}),
IsExportedType(directoryModuleId, "QtObject", Storage::Version{2, 1}))))); IsExportedType(qtQmlNativeModuleId, "QObject", Storage::Version{})))));
} }
TEST_F(QmlTypesParser, Properties) TEST_F(QmlTypesParser, Properties)
@@ -252,7 +253,7 @@ TEST_F(QmlTypesParser, Properties)
Property { name: "targets"; type: "QQuickItem"; isList: true; isReadonly: true; isPointer: true } Property { name: "targets"; type: "QQuickItem"; isList: true; isReadonly: true; isPointer: true }
}})"}; }})"};
parser.parse(source, imports, types, qmltypesFileSourceId, directoryModuleId); parser.parse(source, imports, types, projectData);
ASSERT_THAT(types, ASSERT_THAT(types,
ElementsAre(Field( ElementsAre(Field(
@@ -296,7 +297,7 @@ TEST_F(QmlTypesParser, Functions)
} }
}})"}; }})"};
parser.parse(source, imports, types, qmltypesFileSourceId, directoryModuleId); parser.parse(source, imports, types, projectData);
ASSERT_THAT(types, ASSERT_THAT(types,
ElementsAre( ElementsAre(
@@ -337,7 +338,7 @@ TEST_F(QmlTypesParser, Signals)
} }
}})"}; }})"};
parser.parse(source, imports, types, qmltypesFileSourceId, directoryModuleId); parser.parse(source, imports, types, projectData);
ASSERT_THAT(types, ASSERT_THAT(types,
ElementsAre(Field(&Storage::Type::signalDeclarations, ElementsAre(Field(&Storage::Type::signalDeclarations,
@@ -375,7 +376,7 @@ TEST_F(QmlTypesParser, Enumerations)
} }
}})"}; }})"};
parser.parse(source, imports, types, qmltypesFileSourceId, directoryModuleId); parser.parse(source, imports, types, projectData);
ASSERT_THAT(types, ASSERT_THAT(types,
ElementsAre( ElementsAre(

View File

@@ -37,7 +37,6 @@ public:
(const QString &sourceContent, (const QString &sourceContent,
QmlDesigner::Storage::Imports &imports, QmlDesigner::Storage::Imports &imports,
QmlDesigner::Storage::Types &types, QmlDesigner::Storage::Types &types,
QmlDesigner::SourceId sourceId, const QmlDesigner::Storage::ProjectData &projectData),
QmlDesigner::ModuleId moduleId),
(override)); (override));
}; };