Skip to content

Commit 05fb721

Browse files
committed
#191 - fix ComplexLiteral Id
1 parent f5c1a4a commit 05fb721

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

src/Domain/HydraScript.Domain.FrontEnd/Parser/Impl/Ast/Nodes/Expressions/ComplexLiterals/ArrayLiteral.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public partial class ArrayLiteral : ComplexLiteral
1010

1111
public IReadOnlyList<Expression> Expressions => _expressions;
1212

13+
protected override string NullIdPrefix => "arr";
14+
1315
public override string Id => Parent is AssignmentExpression assignment
1416
? assignment.Destination.Id
1517
: NullId;

src/Domain/HydraScript.Domain.FrontEnd/Parser/Impl/Ast/Nodes/Expressions/ComplexLiterals/ComplexLiteral.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1+
using Cysharp.Text;
2+
13
namespace HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Expressions.ComplexLiterals;
24

35
public abstract class ComplexLiteral : Expression
46
{
7+
protected abstract string NullIdPrefix { get; }
8+
59
protected string NullId
610
{
711
get
812
{
9-
field ??= $"{GetHashCode()}";
13+
field ??= ZString.Concat("_t_", NullIdPrefix, '_', GetHashCode());
1014
return field;
1115
}
1216
}

src/Domain/HydraScript.Domain.FrontEnd/Parser/Impl/Ast/Nodes/Expressions/ComplexLiterals/ObjectLiteral.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public partial class ObjectLiteral : ComplexLiteral
1010

1111
public IReadOnlyList<Property> Properties => _properties;
1212

13+
protected override string NullIdPrefix => "obj";
14+
1315
public override string Id
1416
{
1517
get
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Expressions.ComplexLiterals;
2+
3+
namespace HydraScript.UnitTests.Domain.FrontEnd;
4+
5+
public class ComplexLiteralTests
6+
{
7+
[Theory, MemberData(nameof(StartsWithData))]
8+
public void Id_DifferentType_StartsWithExpected(ComplexLiteral complexLiteral, string expectedPrefix)
9+
{
10+
complexLiteral.Id.Should().StartWith(expectedPrefix);
11+
}
12+
13+
public static TheoryData<ComplexLiteral, string> StartsWithData =>
14+
new()
15+
{
16+
{ new ArrayLiteral([]), "_t_arr_" },
17+
{ new ObjectLiteral([]), "_t_obj_" }
18+
};
19+
}

0 commit comments

Comments
 (0)