Skip to content

Commit 9e32ac3

Browse files
refactor(http-client-csharp): keep single return for required nullable null fallback
Co-authored-by: jorgerangel-msft <102122018+jorgerangel-msft@users.noreply.github.com>
1 parent 28a51dd commit 9e32ac3

3 files changed

Lines changed: 15 additions & 9 deletions

File tree

packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/src/Providers/MrwSerializationTypeDefinition.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2558,11 +2558,11 @@ private MethodBodyStatement CreateConditionalSerializationStatement(
25582558
_utf8JsonWriterSnippet.WriteNull(serializedName));
25592559
}
25602560

2561-
var ifStatement = new IfStatement(condition) { writePropertySerializationStatement };
2562-
var writeNull = _utf8JsonWriterSnippet.WriteNull(serializedName);
2563-
return patchCheck != null
2564-
? new IfElseStatement(ifStatement, [new IfStatement(patchCheck) { writeNull }], null)
2565-
: new IfElseStatement(ifStatement, writeNull);
2561+
MethodBodyStatement writeNull = _utf8JsonWriterSnippet.WriteNull(serializedName);
2562+
return new IfElseStatement(
2563+
condition,
2564+
writePropertySerializationStatement,
2565+
patchCheck != null ? new IfElseStatement(patchCheck, writeNull, null) : writeNull);
25662566
}
25672567

25682568
if (shouldCheckJsonPath)

packages/http-client-csharp/generator/Microsoft.TypeSpec.Generator.ClientModel/test/Providers/MrwSerializationTypeDefinitions/TestData/DynamicModelSerializationTests/WriteRequiredNullableProperty.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,12 @@ protected virtual void JsonModelWriteCore(global::System.Text.Json.Utf8JsonWrite
4141
writer.WritePropertyName("foo"u8);
4242
writer.WriteStringValue(Foo);
4343
}
44-
else if (!Patch.Contains("$.foo"u8))
44+
else
4545
{
46-
writer.WriteNull("foo"u8);
46+
if (!Patch.Contains("$.foo"u8))
47+
{
48+
writer.WriteNull("foo"u8);
49+
}
4750
}
4851

4952
Patch.WriteTo(writer);

packages/http-client-csharp/generator/TestProjects/Local/Sample-TypeSpec/src/Generated/Models/DynamicModel.Serialization.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,12 @@ protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWrit
221221
Patch.WriteTo(writer, "$.requiredNullableDictionary"u8);
222222
writer.WriteEndObject();
223223
}
224-
else if (!Patch.Contains("$.requiredNullableDictionary"u8))
224+
else
225225
{
226-
writer.WriteNull("requiredNullableDictionary"u8);
226+
if (!Patch.Contains("$.requiredNullableDictionary"u8))
227+
{
228+
writer.WriteNull("requiredNullableDictionary"u8);
229+
}
227230
}
228231
if (!Patch.Contains("$.primitiveDictionary"u8))
229232
{

0 commit comments

Comments
 (0)