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,
ImportedTypeName typeName,
PropertyDeclarationTraits traits,
PropertyKind kind,
::Utils::SmallStringView aliasPropertyName,
::Utils::SmallStringView aliasPropertyNameTail = {})
: name{name}
, typeName{std::move(typeName)}
, aliasPropertyName{aliasPropertyName}
, aliasPropertyNameTail{aliasPropertyNameTail}
, traits{traits}
, kind{PropertyKind::Property}
, kind{kind}
{}
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},
std::move(importedTypeName),
traits,
Synchronization::PropertyKind::Alias,
aliasPropertyName,
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)";
}
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)
{
using Utils::operator<<;
return out << "(\"" << propertyDeclaration.name << "\", " << propertyDeclaration.typeName
<< ", " << propertyDeclaration.typeId << ", " << propertyDeclaration.traits << ", "
<< propertyDeclaration.propertyTypeId << ", \""
<< propertyDeclaration.aliasPropertyName << "\")";
<< propertyDeclaration.aliasPropertyName << "\", " << propertyDeclaration.kind << ")";
}
std::ostream &operator<<(std::ostream &out, const FunctionDeclaration &functionDeclaration)

View File

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