Skip to content

Commit a253c0c

Browse files
refactor(http-client-csharp): retain else-if for required nullable null fallback
Co-authored-by: jorgerangel-msft <102122018+jorgerangel-msft@users.noreply.github.com>
1 parent 9e32ac3 commit a253c0c

3 files changed

Lines changed: 9 additions & 15 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-
MethodBodyStatement writeNull = _utf8JsonWriterSnippet.WriteNull(serializedName);
2562-
return new IfElseStatement(
2563-
condition,
2564-
writePropertySerializationStatement,
2565-
patchCheck != null ? new IfElseStatement(patchCheck, writeNull, null) : writeNull);
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);
25662566
}
25672567

25682568
if (shouldCheckJsonPath)

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

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

5249
Patch.WriteTo(writer);

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

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

0 commit comments

Comments
 (0)