QmlDesigner: Fix alias property

QmlDocumentParser was using the wrong constructor. The property alias
constructor is now explicit.

Task-number: QDS-15387
Change-Id: I753cbc259b21129865db54926f77a07391224b77
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Thomas Hartmann
2025-05-23 12:59:57 +02:00
committed by Marco Bubke
parent ee011dc19c
commit 8839b73420
4 changed files with 31 additions and 9 deletions

View File

@@ -848,15 +848,15 @@ public:
explicit PropertyDeclaration(::Utils::SmallStringView name, explicit PropertyDeclaration(::Utils::SmallStringView name,
ImportedTypeName typeName, ImportedTypeName typeName,
PropertyDeclarationTraits traits, PropertyDeclarationTraits traits,
PropertyKind kind,
::Utils::SmallStringView aliasPropertyName, ::Utils::SmallStringView aliasPropertyName,
::Utils::SmallStringView aliasPropertyNameTail = {}) ::Utils::SmallStringView aliasPropertyNameTail = {})
: name{name} : name{name}
, typeName{std::move(typeName)} , typeName{std::move(typeName)}
, aliasPropertyName{aliasPropertyName} , aliasPropertyName{aliasPropertyName}
, aliasPropertyNameTail{aliasPropertyNameTail} , aliasPropertyNameTail{aliasPropertyNameTail}
, traits{traits} , traits{traits}
, kind{PropertyKind::Property} , kind{kind}
{} {}
explicit PropertyDeclaration(::Utils::SmallStringView name, explicit PropertyDeclaration(::Utils::SmallStringView name,

View File

@@ -240,6 +240,7 @@ void addPropertyDeclarations(Storage::Synchronization::Type &type,
type.propertyDeclarations.emplace_back(Utils::SmallString{propertyDeclaration.name}, type.propertyDeclarations.emplace_back(Utils::SmallString{propertyDeclaration.name},
std::move(importedTypeName), std::move(importedTypeName),
traits, traits,
Synchronization::PropertyKind::Alias,
aliasPropertyName, aliasPropertyName,
aliasPropertyNameTail); aliasPropertyNameTail);
} }

View File

@@ -923,13 +923,28 @@ std::ostream &operator<<(std::ostream &out, const Type &type)
<< ",\n\t\t\tdefault: " << type.defaultPropertyName << "\n\t\t\t)"; << ",\n\t\t\tdefault: " << type.defaultPropertyName << "\n\t\t\t)";
} }
std::ostream &operator<<(std::ostream &out, PropertyKind kind)
{
switch (kind) {
case PropertyKind::Property:
out << "Property";
break;
case PropertyKind::Alias:
out << "Alias";
break;
}
return out;
}
std::ostream &operator<<(std::ostream &out, const PropertyDeclaration &propertyDeclaration) std::ostream &operator<<(std::ostream &out, const PropertyDeclaration &propertyDeclaration)
{ {
using Utils::operator<<; using Utils::operator<<;
return out << "(\"" << propertyDeclaration.name << "\", " << propertyDeclaration.typeName return out << "(\"" << propertyDeclaration.name << "\", " << propertyDeclaration.typeName
<< ", " << propertyDeclaration.typeId << ", " << propertyDeclaration.traits << ", " << ", " << propertyDeclaration.typeId << ", " << propertyDeclaration.traits << ", "
<< propertyDeclaration.propertyTypeId << ", \"" << propertyDeclaration.propertyTypeId << ", \""
<< propertyDeclaration.aliasPropertyName << "\")"; << propertyDeclaration.aliasPropertyName << "\", " << propertyDeclaration.kind << ")";
} }
std::ostream &operator<<(std::ostream &out, const FunctionDeclaration &functionDeclaration) std::ostream &operator<<(std::ostream &out, const FunctionDeclaration &functionDeclaration)

View File

@@ -50,8 +50,8 @@ MATCHER_P4(IsAliasPropertyDeclaration,
traits, traits,
aliasPropertyName, aliasPropertyName,
std::string(negation ? "isn't " : "is ") std::string(negation ? "isn't " : "is ")
+ PrintToString( + PrintToString(Synchronization::PropertyDeclaration{
Synchronization::PropertyDeclaration{name, typeName, traits, aliasPropertyName})) name, typeName, traits, Synchronization::PropertyKind::Alias, aliasPropertyName, {}}))
{ {
const Synchronization::PropertyDeclaration &propertyDeclaration = arg; const Synchronization::PropertyDeclaration &propertyDeclaration = arg;
@@ -59,7 +59,8 @@ MATCHER_P4(IsAliasPropertyDeclaration,
&& Synchronization::ImportedTypeName{typeName} == propertyDeclaration.typeName && Synchronization::ImportedTypeName{typeName} == propertyDeclaration.typeName
&& propertyDeclaration.traits == traits && propertyDeclaration.traits == traits
&& propertyDeclaration.aliasPropertyName == aliasPropertyName && propertyDeclaration.aliasPropertyName == aliasPropertyName
&& propertyDeclaration.aliasPropertyNameTail.empty(); && propertyDeclaration.aliasPropertyNameTail.empty()
&& propertyDeclaration.kind == Synchronization::PropertyKind::Alias;
} }
MATCHER_P5(IsAliasPropertyDeclaration, MATCHER_P5(IsAliasPropertyDeclaration,
@@ -69,8 +70,12 @@ MATCHER_P5(IsAliasPropertyDeclaration,
aliasPropertyName, aliasPropertyName,
aliasPropertyNameTail, aliasPropertyNameTail,
std::string(negation ? "isn't " : "is ") std::string(negation ? "isn't " : "is ")
+ PrintToString( + PrintToString(Synchronization::PropertyDeclaration{name,
Synchronization::PropertyDeclaration{name, typeName, traits, aliasPropertyName})) typeName,
traits,
Synchronization::PropertyKind::Alias,
aliasPropertyName,
aliasPropertyNameTail}))
{ {
const Synchronization::PropertyDeclaration &propertyDeclaration = arg; const Synchronization::PropertyDeclaration &propertyDeclaration = arg;
@@ -78,7 +83,8 @@ MATCHER_P5(IsAliasPropertyDeclaration,
&& Synchronization::ImportedTypeName{typeName} == propertyDeclaration.typeName && Synchronization::ImportedTypeName{typeName} == propertyDeclaration.typeName
&& propertyDeclaration.traits == traits && propertyDeclaration.traits == traits
&& propertyDeclaration.aliasPropertyName == aliasPropertyName && propertyDeclaration.aliasPropertyName == aliasPropertyName
&& propertyDeclaration.aliasPropertyNameTail == aliasPropertyNameTail; && propertyDeclaration.aliasPropertyNameTail == aliasPropertyNameTail
&& propertyDeclaration.kind == Synchronization::PropertyKind::Alias;
} }
MATCHER_P2(IsFunctionDeclaration, MATCHER_P2(IsFunctionDeclaration,