diff --git a/Directory.Build.props b/Directory.Build.props
index 84f2948e..0d9693fc 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -4,7 +4,7 @@
true
true
true
- 2.64.1
+ 2.66
diff --git a/Directory.Packages.props b/Directory.Packages.props
index ba469d28..f8bafac3 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -1,6 +1,6 @@
-
+
diff --git a/Loqui.Generation/Fields/ArrayType.cs b/Loqui.Generation/Fields/ArrayType.cs
index 88027af6..2e6638a9 100644
--- a/Loqui.Generation/Fields/ArrayType.cs
+++ b/Loqui.Generation/Fields/ArrayType.cs
@@ -12,17 +12,26 @@ public class ArrayType : ListType
public override bool HasDefault => true;
public override string TypeName(bool getter, bool needsCovariance = false)
{
+ var itemTypeName = ItemTypeName(getter);
if (getter)
{
- return $"ReadOnlyMemorySlice<{ItemTypeName(getter)}>";
+ if (SimpleTarget)
+ {
+ return $"ReadOnlyMemorySlice<{itemTypeName}>";
+ }
+ else
+ {
+ return $"IReadOnlyList<{itemTypeName}>";
+ }
}
else
{
- return $"{ItemTypeName(getter)}[]";
+ return $"{itemTypeName}[]";
}
}
public int? FixedSize;
+ public bool SimpleTarget => ItemTypeName(getter: false) == ItemTypeName(getter: true);
public override async Task Load(XElement node, bool requireName = true)
{
@@ -54,7 +63,7 @@ protected override string GetActualItemClass(bool ctor = false)
}
else
{
- return $"Array.Empty{SubTypeGeneration.TypeName(getter: false, needsCovariance: true)}()";
+ return "[]";
}
}
@@ -67,7 +76,14 @@ public override string ListTypeName(bool getter, bool internalInterface)
}
if (getter)
{
- return $"ReadOnlyMemorySlice<{itemTypeName}>";
+ if (SimpleTarget)
+ {
+ return $"ReadOnlyMemorySlice<{itemTypeName}>";
+ }
+ else
+ {
+ return $"IReadOnlyList<{itemTypeName}>";
+ }
}
else
{
@@ -116,6 +132,11 @@ public override void GenerateClear(StructuredStringBuilder sb, Accessor accessor
public override void GenerateForEquals(StructuredStringBuilder sb, Accessor accessor, Accessor rhsAccessor, Accessor maskAccessor)
{
+ if (!SimpleTarget)
+ {
+ base.GenerateForEquals(sb, accessor, rhsAccessor, maskAccessor);
+ return;
+ }
sb.AppendLine($"if ({GetTranslationIfAccessor(maskAccessor)})");
using (sb.CurlyBrace())
{
@@ -136,6 +157,11 @@ public override void GenerateForEquals(StructuredStringBuilder sb, Accessor acce
public override void GenerateForEqualsMask(StructuredStringBuilder sb, Accessor accessor, Accessor rhsAccessor, string retAccessor)
{
+ if (!SimpleTarget)
+ {
+ base.GenerateForEqualsMask(sb, accessor, rhsAccessor, retAccessor);
+ return;
+ }
string funcStr;
var loqui = SubTypeGeneration as LoquiType;
if (loqui != null)