From 6d2a40ecfb2dfacaa0dccde6fee1b1e276649cd1 Mon Sep 17 00:00:00 2001 From: Wei Hu Date: Fri, 12 Sep 2025 11:49:13 +0800 Subject: [PATCH 1/3] Add setter for collection-type property during safe flatten to avoid massice breaking changes. --- .../src/Utilities/PropertyHelpers.cs | 6 +----- .../src/Generated/Models/StorageTaskAction.cs | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs index 84ec8a84dd36..4a9121c7b33c 100644 --- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs +++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs @@ -135,11 +135,7 @@ public static MethodBodyStatement BuildGetter(bool? includeGetterNullCheck, Prop public static MethodBodyStatement? BuildSetterForSafeFlatten(bool includeSetterCheck, ModelProvider innerModel, PropertyProvider internalProperty, PropertyProvider innerProperty) { - if (innerProperty.Type.IsCollection) - { - return null; - } - + // To not introduce breaking change, for collection types, we keep the setter for collection-type properties during safe flatten. var isOverriddenValueType = IsOverriddenValueType(innerProperty); var setter = new List(); var internalPropertyExpression = This.Property(internalProperty.Name); diff --git a/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs b/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs index 1a007edc1c33..3c45bb7392cc 100644 --- a/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs +++ b/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs @@ -49,7 +49,7 @@ public IList ElseOperations { get { - return Else.Operations; + return Else is null ? default : Else.Operations; } set { From c93e7cd63b4c3a51b80f3f446a5cf95f279e0532 Mon Sep 17 00:00:00 2001 From: Wei Hu Date: Fri, 12 Sep 2025 11:52:54 +0800 Subject: [PATCH 2/3] revert generated code --- .../src/Generated/Models/StorageTaskAction.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs b/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs index 3c45bb7392cc..1a007edc1c33 100644 --- a/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs +++ b/sdk/storageactions/Azure.ResourceManager.StorageActions/src/Generated/Models/StorageTaskAction.cs @@ -49,7 +49,7 @@ public IList ElseOperations { get { - return Else is null ? default : Else.Operations; + return Else.Operations; } set { From ff880cce321fcde6e8bd295908ca4f5e32dec8ad Mon Sep 17 00:00:00 2001 From: Wei Hu Date: Fri, 12 Sep 2025 12:37:57 +0800 Subject: [PATCH 3/3] regen test --- .../Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs index 0ba95e94e4b7..66839da53e1b 100644 --- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs +++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs @@ -208,6 +208,10 @@ public IList OptionalFlattenPropertyRandomCollectionProp { return OptionalFlattenProperty is null ? default : OptionalFlattenProperty.RandomCollectionProp; } + set + { + OptionalFlattenProperty = new OptionalFlattenPropertyType(value); + } } } }