From 13d476360b4fb7cec70a0166b32e20e33db6b5eb Mon Sep 17 00:00:00 2001 From: hadashiA Date: Wed, 17 Apr 2024 16:41:38 +0900 Subject: [PATCH 1/3] Fix default value from ctor --- .../VYamlSourceGenerator.cs | 28 ++----------------- VYaml.SourceGenerator/MemberMeta.cs | 19 +++++++++++++ .../VYamlIncrementalSourceGenerator.cs | 28 ++----------------- 3 files changed, 23 insertions(+), 52 deletions(-) diff --git a/VYaml.SourceGenerator.Roslyn3/VYamlSourceGenerator.cs b/VYaml.SourceGenerator.Roslyn3/VYamlSourceGenerator.cs index 727da70..ad3eb5d 100644 --- a/VYaml.SourceGenerator.Roslyn3/VYamlSourceGenerator.cs +++ b/VYaml.SourceGenerator.Roslyn3/VYamlSourceGenerator.cs @@ -427,26 +427,7 @@ static bool TryEmitDeserializeMethod( codeWriter.AppendLine(); foreach (var memberMeta in typeMeta.MemberMetas) { - codeWriter.Append($"var __{memberMeta.Name}__ = "); - if (memberMeta.HasExplicitDefaultValueFromConstructor) - { - switch (memberMeta.ExplicitDefaultValueFromConstructor) - { - case null: - codeWriter.AppendLine("null;", false); - break; - case string stringValue: - codeWriter.AppendLine($"\"{stringValue}\";", false); - break; - case {} anyValue: - codeWriter.AppendLine($"{anyValue};", false); - break; - } - } - else - { - codeWriter.AppendLine($"default({memberMeta.FullTypeName});", false); - } + codeWriter.Append($"var __{memberMeta.Name}__ = {memberMeta.EmitDefaultValue()};"); } using (codeWriter.BeginBlockScope("while (!parser.End && parser.CurrentEventType != ParseEventType.MappingEnd)")) @@ -505,12 +486,7 @@ static bool TryEmitDeserializeMethod( { if (x.HasExplicitDefaultValueFromConstructor) { - return x.ExplicitDefaultValueFromConstructor switch - { - null => $"__{x.Name}__ = null", - string stringValue => $"__{x.Name}__ = \"{stringValue}\"", - { } anyValue => $"__{x.Name}__ = {anyValue}" - }; + return $"__{x.Name}__ = {x.EmitDefaultValue()}"; } return $"__{x.Name}__"; })); diff --git a/VYaml.SourceGenerator/MemberMeta.cs b/VYaml.SourceGenerator/MemberMeta.cs index f21a8e7..86ac3ad 100644 --- a/VYaml.SourceGenerator/MemberMeta.cs +++ b/VYaml.SourceGenerator/MemberMeta.cs @@ -78,4 +78,23 @@ public Location GetLocation(TypeDeclarationSyntax fallback) var location = Symbol.Locations.FirstOrDefault() ?? fallback.Identifier.GetLocation(); return location; } + + public string EmitDefaultValue() + { + if (!HasExplicitDefaultValueFromConstructor) + { + return $"default({FullTypeName})"; + } + + return ExplicitDefaultValueFromConstructor switch + { + null => $"default({FullTypeName})", + string x => $"\"{x}\"", + float x => $"{x}f", + double x => $"{x}d", + decimal x => $"{x}m", + bool x => x ? "true" : "false", + _ => ExplicitDefaultValueFromConstructor.ToString() + }; + } } diff --git a/VYaml.SourceGenerator/VYamlIncrementalSourceGenerator.cs b/VYaml.SourceGenerator/VYamlIncrementalSourceGenerator.cs index 2c46c40..3e0c97a 100644 --- a/VYaml.SourceGenerator/VYamlIncrementalSourceGenerator.cs +++ b/VYaml.SourceGenerator/VYamlIncrementalSourceGenerator.cs @@ -439,26 +439,7 @@ static bool TryEmitDeserializeMethod( codeWriter.AppendLine(); foreach (var memberMeta in typeMeta.MemberMetas) { - codeWriter.Append($"var __{memberMeta.Name}__ = "); - if (memberMeta.HasExplicitDefaultValueFromConstructor) - { - switch (memberMeta.ExplicitDefaultValueFromConstructor) - { - case null: - codeWriter.AppendLine("null;", false); - break; - case string stringValue: - codeWriter.AppendLine($"\"{stringValue}\";", false); - break; - case {} anyValue: - codeWriter.AppendLine($"{anyValue};", false); - break; - } - } - else - { - codeWriter.AppendLine($"default({memberMeta.FullTypeName});", false); - } + codeWriter.Append($"var __{memberMeta.Name}__ = {memberMeta.EmitDefaultValue()};"); } using (codeWriter.BeginBlockScope("while (!parser.End && parser.CurrentEventType != ParseEventType.MappingEnd)")) @@ -517,12 +498,7 @@ static bool TryEmitDeserializeMethod( { if (x.HasExplicitDefaultValueFromConstructor) { - return x.ExplicitDefaultValueFromConstructor switch - { - null => $"__{x.Name}__ = null", - string stringValue => $"__{x.Name}__ = \"{stringValue}\"", - { } anyValue => $"__{x.Name}__ = {anyValue}" - }; + return $"__{x.Name}__ = {x.EmitDefaultValue()}"; } return $"__{x.Name}__"; })); From 4c61f3d56224eed06f4eeb95bf0f0cb4292783e7 Mon Sep 17 00:00:00 2001 From: hadashiA Date: Wed, 17 Apr 2024 16:43:18 +0900 Subject: [PATCH 2/3] Update dll --- .../VYaml.SourceGenerator.csproj | 2 +- .../VYaml/Runtime/VYaml.SourceGenerator.dll | Bin 67584 -> 67584 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/VYaml.SourceGenerator/VYaml.SourceGenerator.csproj b/VYaml.SourceGenerator/VYaml.SourceGenerator.csproj index 974581b..bd3fe66 100644 --- a/VYaml.SourceGenerator/VYaml.SourceGenerator.csproj +++ b/VYaml.SourceGenerator/VYaml.SourceGenerator.csproj @@ -30,7 +30,7 @@ diff --git a/VYaml.Unity/Assets/VYaml/Runtime/VYaml.SourceGenerator.dll b/VYaml.Unity/Assets/VYaml/Runtime/VYaml.SourceGenerator.dll index b59de3ab27c29d57429fbf8ad0e20a5ac1f76e40..f22140c34131427a30ad2194f6d9adffbc630043 100644 GIT binary patch delta 22625 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 pia&*eS6Aq}LNg6Am%c*uJ;1NHYn5Fs)b` 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 From 84ca192cf4eeb84eff185f51f6dba551fb21e79c Mon Sep 17 00:00:00 2001 From: hadashiA Date: Wed, 17 Apr 2024 16:50:13 +0900 Subject: [PATCH 3/3] Add test --- .../Serialization/GeneratedFormatterTest.cs | 9 +++++++++ VYaml.Tests/TypeDeclarations/Simple.cs | 15 +++++++++++++++ .../Tests/Serialization/GeneratedFormatterTest.cs | 9 +++++++++ .../Assets/Tests/TypeDeclarations/Simple.cs | 15 +++++++++++++++ 4 files changed, 48 insertions(+) diff --git a/VYaml.Tests/Serialization/GeneratedFormatterTest.cs b/VYaml.Tests/Serialization/GeneratedFormatterTest.cs index a75ee98..a896ba0 100644 --- a/VYaml.Tests/Serialization/GeneratedFormatterTest.cs +++ b/VYaml.Tests/Serialization/GeneratedFormatterTest.cs @@ -335,5 +335,14 @@ public void Deserialize_CustomConstructorWithSetter() Assert.That(result.Bar, Is.EqualTo("aaa")); Assert.That(result.Hoge, Is.EqualTo("bbb")); } + + [Test] + public void Deserialize_CustomCOnstructorWithDefaultValue() + { + var result = Deserialize("{}"); + Assert.That(result.X, Is.EqualTo(100)); + Assert.That(result.Y, Is.EqualTo(222m)); + Assert.That(result.Z, Is.EqualTo(true)); + } } } \ No newline at end of file diff --git a/VYaml.Tests/TypeDeclarations/Simple.cs b/VYaml.Tests/TypeDeclarations/Simple.cs index be0efc0..946097b 100644 --- a/VYaml.Tests/TypeDeclarations/Simple.cs +++ b/VYaml.Tests/TypeDeclarations/Simple.cs @@ -235,6 +235,21 @@ public WithCustomConstructor2(int foo, string bar) } } + [YamlObject] + public partial record WithCustomConstructor3 + { + public int X { get; } + public decimal Y { get; } + public bool Z { get; } + + [YamlConstructor] + public WithCustomConstructor3(int x = 100, decimal y = 222m, bool z = true) + { + X = x; + Y = y; + Z = z; + } + } [YamlObject] public partial class WithCustomConstructorAndOtherProps diff --git a/VYaml.Unity/Assets/Tests/Serialization/GeneratedFormatterTest.cs b/VYaml.Unity/Assets/Tests/Serialization/GeneratedFormatterTest.cs index a75ee98..a896ba0 100644 --- a/VYaml.Unity/Assets/Tests/Serialization/GeneratedFormatterTest.cs +++ b/VYaml.Unity/Assets/Tests/Serialization/GeneratedFormatterTest.cs @@ -335,5 +335,14 @@ public void Deserialize_CustomConstructorWithSetter() Assert.That(result.Bar, Is.EqualTo("aaa")); Assert.That(result.Hoge, Is.EqualTo("bbb")); } + + [Test] + public void Deserialize_CustomCOnstructorWithDefaultValue() + { + var result = Deserialize("{}"); + Assert.That(result.X, Is.EqualTo(100)); + Assert.That(result.Y, Is.EqualTo(222m)); + Assert.That(result.Z, Is.EqualTo(true)); + } } } \ No newline at end of file diff --git a/VYaml.Unity/Assets/Tests/TypeDeclarations/Simple.cs b/VYaml.Unity/Assets/Tests/TypeDeclarations/Simple.cs index be0efc0..946097b 100644 --- a/VYaml.Unity/Assets/Tests/TypeDeclarations/Simple.cs +++ b/VYaml.Unity/Assets/Tests/TypeDeclarations/Simple.cs @@ -235,6 +235,21 @@ public WithCustomConstructor2(int foo, string bar) } } + [YamlObject] + public partial record WithCustomConstructor3 + { + public int X { get; } + public decimal Y { get; } + public bool Z { get; } + + [YamlConstructor] + public WithCustomConstructor3(int x = 100, decimal y = 222m, bool z = true) + { + X = x; + Y = y; + Z = z; + } + } [YamlObject] public partial class WithCustomConstructorAndOtherProps