Skip to content

Commit 438298a

Browse files
committed
Fix test
1 parent 3732196 commit 438298a

3 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/MemoryPack.Generator/MemoryPackGenerator.Emitter.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -927,16 +927,11 @@ string EmitDeserializeConstructionWithBranching(string indent)
927927
.Select((x, i) => (x, i))
928928
.Where(v => v.x.SuppressDefaultInitialization);
929929

930-
if (GenerateType is GenerateType.VersionTolerant or GenerateType.CircularReference)
931-
{
932-
return members
933-
.Select(v => $"{indent}if (deltas[{v.i}] != 0) value.@{v.x.Name} = __{v.x.Name};")
934-
.NewLine();
935-
}
930+
var lines = GenerateType is GenerateType.VersionTolerant or GenerateType.CircularReference
931+
? members.Select(v => $"{indent}if (deltas.Length > {v.i} && deltas[{v.i}] != 0) value.@{v.x.Name} = __{v.x.Name};")
932+
: members.Select(v => $"{indent}if ({v.i + 1} <= count) value.@{v.x.Name} = __{v.x.Name};");
936933

937-
return members
938-
.Select(v => $"{indent}if ({v.i + 1} <= count) value.@{v.x.Name} = __{v.x.Name};")
939-
.NewLine();
934+
return lines.NewLine();
940935
}
941936

942937
string EmitUnionTemplate(IGeneratorContext context)

tests/MemoryPack.Tests/DefaultValueTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ public void SuppressDefaultInitialization()
1919
[Fact]
2020
public void SuppressDefaultInitialization_VersionTolerant()
2121
{
22-
var bin = MemoryPackSerializer.Serialize(new DefaultValuePlaceholder { X = 1 });
22+
var bin = MemoryPackSerializer.Serialize(new DefaultValuePlaceholderWithVersionTolerant { X = 1 });
2323
var expected = new HasDefaultValueWithVersionTolerant();
2424
var deserializedValue = MemoryPackSerializer.Deserialize<HasDefaultValueWithVersionTolerant>(bin)!;
2525
deserializedValue.Y.Should().Be(default);
26-
deserializedValue.Z.Should().Be(expected.Z);
26+
deserializedValue.Z.Should().Be(default);
2727
deserializedValue.Y2.Should().Be(expected.Y2);
2828
deserializedValue.Z2.Should().Be(expected.Z2);
2929
}

tests/MemoryPack.Tests/Models/DefaultValues.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ partial class DefaultValuePlaceholder
66
public int X { get; set; }
77
}
88

9+
[MemoryPackable(GenerateType.VersionTolerant, SerializeLayout.Sequential)]
10+
partial class DefaultValuePlaceholderWithVersionTolerant
11+
{
12+
public int X { get; set; }
13+
}
14+
915
[MemoryPackable(GenerateType.VersionTolerant, SerializeLayout.Sequential)]
1016
partial class HasDefaultValueWithVersionTolerant
1117
{

0 commit comments

Comments
 (0)