Skip to content

Commit 794e6a0

Browse files
Fix default value of flattend property parameter for ModelFactory (#51799)
* reproduce issue 51754. * Fix default value of flattend property parameter for ModelFactory * regen --------- Co-authored-by: haiyuan_zhang <[email protected]>
1 parent b6c6998 commit 794e6a0

File tree

9 files changed

+1020
-721
lines changed

9 files changed

+1020
-721
lines changed

eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Visitors/SafeFlattenVisitor.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,20 +208,26 @@ private void UpdateModelFactoryMethod(MethodProvider method, CSharpType returnTy
208208
{
209209
var updatedParameters = new List<ParameterProvider>(method.Signature.Parameters.Count);
210210
var updated = false;
211+
var parameterShouldBeNullable = false; // if the previous method parameter is nullable, we need to ensure that the current parameter is also set with default value
211212
foreach (var parameter in method.Signature.Parameters)
212213
{
213214
if (propertyMap.TryGetValue(parameter.Type, out var flattenedProperty))
214215
{
215216
updated = true;
216217
var updatedParameter = flattenedProperty.AsParameter;
217-
if (flattenedProperty.Type.IsNullable)
218+
if (parameterShouldBeNullable || flattenedProperty.Type.IsNullable)
218219
{
220+
parameterShouldBeNullable = true;
219221
updatedParameter.DefaultValue = Default; // Ensure that the default value is set to null for nullable types
220222
}
221223
updatedParameters.Add(updatedParameter);
222224
}
223225
else
224226
{
227+
if (parameter.Type.IsNullable)
228+
{
229+
parameterShouldBeNullable = true;
230+
}
225231
updatedParameters.Add(parameter);
226232
}
227233
}

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/foo.tsp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,15 @@ interface FooSettingsOperations {
7171
}
7272

7373
model FooSettingsProperties {
74-
accessControlEnabled: boolean;
74+
accessControlEnabled?: boolean;
7575

7676
@visibility(Lifecycle.Read)
7777
provisioningState?: ResourceProvisioningState;
78+
79+
@visibility(Lifecycle.Read)
80+
metaData?: FooSettingsPropertiesMetaData;
81+
}
82+
83+
model FooSettingsPropertiesMetaData {
84+
metaDatas?: string[];
7885
}

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/MgmtTypeSpecModelFactory.cs

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Models/FooSettingsProperties.Serialization.cs

Lines changed: 26 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Models/FooSettingsProperties.cs

Lines changed: 17 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Models/FooSettingsPropertiesMetaData.Serialization.cs

Lines changed: 167 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Models/FooSettingsPropertiesMetaData.cs

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)