From 258871aa37dc9150e5776f18f2614a0156df8f6b Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 20 Apr 2022 15:53:28 +0200 Subject: [PATCH] QmlDesigner: Improve alias enumeration referencing in properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If an alias enumeration is referenced in properties it should be fully qualified too. Task-number: QDS-6768 Change-Id: I9fa739b43315c761ae1d026eb6d3ddce386d7ddc Reviewed-by: Henning Gründl --- .../projectstorage/qmltypesparser.cpp | 16 +++++++++-- tests/unit/unittest/qmltypesparser-test.cpp | 28 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp b/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp index 99c64c7a6ff..664bd8f0776 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp +++ b/src/plugins/qmldesigner/designercore/projectstorage/qmltypesparser.cpp @@ -331,6 +331,16 @@ Storage::EnumerationDeclarations createEnumeration(const QHash createEnumerationAliases(const QHash &qmlEnumerations) diff --git a/tests/unit/unittest/qmltypesparser-test.cpp b/tests/unit/unittest/qmltypesparser-test.cpp index 1595591b40a..521019429cb 100644 --- a/tests/unit/unittest/qmltypesparser-test.cpp +++ b/tests/unit/unittest/qmltypesparser-test.cpp @@ -632,4 +632,32 @@ TEST_F(QmlTypesParser, EnumerationIsReferencedByQualifiedName) Storage::PropertyDeclarationTraits::None))))); } +TEST_F(QmlTypesParser, AliasEnumerationIsReferencedByQualifiedName) +{ + QString source{R"(import QtQuick.tooling 1.2 + Module{ + Component { name: "QObject" + Property { name: "colorSpace"; type: "NamedColorSpaces" } + Enum { + name: "NamedColorSpace" + alias: "NamedColorSpaces" + values: [ + "Unknown", + "SRgb", + "AdobeRgb", + "DisplayP3", + ] + } + }})"}; + + parser.parse(source, imports, types, projectData); + + ASSERT_THAT(types, + Contains(Field(&Storage::Type::propertyDeclarations, + ElementsAre(IsPropertyDeclaration( + "colorSpace", + Storage::ImportedType{"QObject::NamedColorSpaces"}, + Storage::PropertyDeclarationTraits::None))))); +} + } // namespace