From d8a4ffb2d42863e50201ffb1d3b331fd5141d08d Mon Sep 17 00:00:00 2001 From: HarelM Date: Mon, 24 Aug 2026 21:57:45 +0300 Subject: [PATCH 1/3] feat: add support for nullable arrays in swift 5,6 --- .../languages/Swift5ClientCodegen.java | 9 +++- .../languages/Swift6ClientCodegen.java | 3 +- .../swift5/Swift5ClientCodegenTest.java | 25 +++++++++++ .../swift6/Swift6ClientCodegenTest.java | 22 ++++++++++ .../src/test/resources/3_0/issue_22355.yaml | 41 +++++++++++++++++++ .../issue22355-nullable-array-items.yaml | 41 +++++++++++++++++++ 6 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index e5f4b90614a5..d9fcdd990901 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -769,7 +769,8 @@ public String apiFileFolder() { public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { Schema inner = ModelUtils.getSchemaItems(p); - return ModelUtils.isSet(p) ? "Set<" + getTypeDeclaration(inner) + ">" : "[" + getTypeDeclaration(inner) + "]"; + String innerTypeDeclaration = getItemsTypeDeclaration(inner); + return ModelUtils.isSet(p) ? "Set<" + innerTypeDeclaration + ">" : "[" + innerTypeDeclaration + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); return "[String: " + getTypeDeclaration(inner) + "]"; @@ -777,6 +778,12 @@ public String getTypeDeclaration(Schema p) { return super.getTypeDeclaration(p); } + private String getItemsTypeDeclaration(Schema items) { + String itemsTypeDeclaration = getTypeDeclaration(items); + String nullable = items.getNullable() != null && items.getNullable() && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; + return itemsTypeDeclaration + nullable; + } + @Override public String getSchemaType(Schema p) { String openAPIType = super.getSchemaType(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java index 3af8f6805235..2925efdbdf73 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java @@ -815,7 +815,8 @@ public String apiFileFolder() { public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { Schema inner = ModelUtils.getSchemaItems(p); - return ModelUtils.isSet(p) ? "Set<" + getTypeDeclaration(inner) + ">" : "[" + getTypeDeclaration(inner) + "]"; + String innerTypeDeclaration = getItemsTypeDeclaration(inner); + return ModelUtils.isSet(p) ? "Set<" + innerTypeDeclaration + ">" : "[" + innerTypeDeclaration + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = unaliasSchema(ModelUtils.getAdditionalProperties(p)); return "[String: " + getItemsTypeDeclaration(inner) + "]"; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java index 8344a0427b76..eadb3073b010 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java @@ -410,4 +410,29 @@ public void testAdditionalModelImportsParsing() { Assert.assertEquals(imports.get(2), "BazKit"); } + @Test(description = "nullable array items are declared as optionals", enabled = true) + public void nullableArrayItemsTest() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_22355.yaml"); + final DefaultCodegen codegen = new Swift5ClientCodegen(); + codegen.setOpenAPI(openAPI); + final String model = "NullItemsNotNullItems"; + final CodegenModel cm = codegen.fromModel(model, openAPI.getComponents().getSchemas().get(model)); + + Assert.assertEquals(cm.vars.size(), 6); + + Assert.assertEquals(cm.vars.get(0).baseName, "nullableItems"); + Assert.assertEquals(cm.vars.get(1).baseName, "notNullableItems"); + Assert.assertEquals(cm.vars.get(2).baseName, "defaultItems"); + Assert.assertEquals(cm.vars.get(3).baseName, "nullableDoubleItems"); + Assert.assertEquals(cm.vars.get(4).baseName, "nullableItemsSet"); + Assert.assertEquals(cm.vars.get(5).baseName, "nestedNullableItems"); + + Assert.assertEquals(cm.vars.get(0).dataType, "[String?]"); + Assert.assertEquals(cm.vars.get(1).dataType, "[String]"); + Assert.assertEquals(cm.vars.get(2).dataType, "[String]"); + Assert.assertEquals(cm.vars.get(3).dataType, "[Double?]"); + Assert.assertEquals(cm.vars.get(4).dataType, "Set"); + Assert.assertEquals(cm.vars.get(5).dataType, "[[String?]]"); + } + } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java index ad5ee6eb8c93..dd50c9e1fdcd 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java @@ -505,4 +505,26 @@ public void testNullableMap() { Assert.assertEquals(notNullableMap.getDataType(), "[String: String]"); Assert.assertEquals(defaultMap.getDataType(), "[String: String]"); } + + @Test(description = "Issue #22355") + public void testNullableArrayItems() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml"); + + Schema test1 = openAPI.getComponents().getSchemas().get("NullItemsNotNullItems"); + CodegenModel cm1 = swiftCodegen.fromModel("NullItemsNotNullItems", test1); + + // Assert the dataType properly generated + CodegenProperty nullableItems = cm1.vars.get(0); + CodegenProperty notNullableItems = cm1.vars.get(1); + CodegenProperty defaultItems = cm1.vars.get(2); + CodegenProperty nullableDoubleItems = cm1.vars.get(3); + CodegenProperty nullableItemsSet = cm1.vars.get(4); + CodegenProperty nestedNullableItems = cm1.vars.get(5); + Assert.assertEquals(nullableItems.getDataType(), "[String?]"); + Assert.assertEquals(notNullableItems.getDataType(), "[String]"); + Assert.assertEquals(defaultItems.getDataType(), "[String]"); + Assert.assertEquals(nullableDoubleItems.getDataType(), "[Double?]"); + Assert.assertEquals(nullableItemsSet.getDataType(), "Set"); + Assert.assertEquals(nestedNullableItems.getDataType(), "[[String?]]"); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml new file mode 100644 index 000000000000..7cb79df8846f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml @@ -0,0 +1,41 @@ +openapi: 3.0.0 +info: + title: 'Issue 22355 Nullable array items' + version: latest +components: + schemas: + NullItemsNotNullItems: + properties: + nullableItems: + type: array + items: + type: string + nullable: true + notNullableItems: + type: array + items: + type: string + nullable: false + defaultItems: + type: array + items: + type: string + nullableDoubleItems: + type: array + items: + type: number + format: double + nullable: true + nullableItemsSet: + type: array + uniqueItems: true + items: + type: string + nullable: true + nestedNullableItems: + type: array + items: + type: array + items: + type: string + nullable: true diff --git a/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml b/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml new file mode 100644 index 000000000000..7cb79df8846f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml @@ -0,0 +1,41 @@ +openapi: 3.0.0 +info: + title: 'Issue 22355 Nullable array items' + version: latest +components: + schemas: + NullItemsNotNullItems: + properties: + nullableItems: + type: array + items: + type: string + nullable: true + notNullableItems: + type: array + items: + type: string + nullable: false + defaultItems: + type: array + items: + type: string + nullableDoubleItems: + type: array + items: + type: number + format: double + nullable: true + nullableItemsSet: + type: array + uniqueItems: true + items: + type: string + nullable: true + nestedNullableItems: + type: array + items: + type: array + items: + type: string + nullable: true From 51895179e78c8eb5bee4ba183d9f5689461d1219 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 25 Aug 2026 10:49:49 +0300 Subject: [PATCH 2/3] Update to use isNullable --- .../codegen/languages/Swift5ClientCodegen.java | 2 +- .../codegen/languages/Swift6ClientCodegen.java | 2 +- .../codegen/swift5/Swift5ClientCodegenTest.java | 14 +++++++++----- .../codegen/swift6/Swift6ClientCodegenTest.java | 12 +++++++++--- .../src/test/resources/3_0/issue_22355.yaml | 12 ++++++++++++ .../swift6/issue22355-nullable-array-items.yaml | 12 ++++++++++++ 6 files changed, 44 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index d9fcdd990901..cd24688b628a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -780,7 +780,7 @@ public String getTypeDeclaration(Schema p) { private String getItemsTypeDeclaration(Schema items) { String itemsTypeDeclaration = getTypeDeclaration(items); - String nullable = items.getNullable() != null && items.getNullable() && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; + String nullable = ModelUtils.isNullable(unaliasSchema(items)) && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; return itemsTypeDeclaration + nullable; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java index 2925efdbdf73..9f6df7ef4283 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java @@ -826,7 +826,7 @@ public String getTypeDeclaration(Schema p) { private String getItemsTypeDeclaration(Schema items) { String itemsTypeDeclaration = getTypeDeclaration(items); - String nullable = items.getNullable() != null && items.getNullable() && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; + String nullable = ModelUtils.isNullable(unaliasSchema(items)) && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; return itemsTypeDeclaration + nullable; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java index eadb3073b010..c48afe722762 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java @@ -418,21 +418,25 @@ public void nullableArrayItemsTest() { final String model = "NullItemsNotNullItems"; final CodegenModel cm = codegen.fromModel(model, openAPI.getComponents().getSchemas().get(model)); - Assert.assertEquals(cm.vars.size(), 6); + Assert.assertEquals(cm.vars.size(), 8); Assert.assertEquals(cm.vars.get(0).baseName, "nullableItems"); Assert.assertEquals(cm.vars.get(1).baseName, "notNullableItems"); Assert.assertEquals(cm.vars.get(2).baseName, "defaultItems"); Assert.assertEquals(cm.vars.get(3).baseName, "nullableDoubleItems"); - Assert.assertEquals(cm.vars.get(4).baseName, "nullableItemsSet"); - Assert.assertEquals(cm.vars.get(5).baseName, "nestedNullableItems"); + Assert.assertEquals(cm.vars.get(4).baseName, "xNullableItems"); + Assert.assertEquals(cm.vars.get(5).baseName, "aliasedNullableItems"); + Assert.assertEquals(cm.vars.get(6).baseName, "nullableItemsSet"); + Assert.assertEquals(cm.vars.get(7).baseName, "nestedNullableItems"); Assert.assertEquals(cm.vars.get(0).dataType, "[String?]"); Assert.assertEquals(cm.vars.get(1).dataType, "[String]"); Assert.assertEquals(cm.vars.get(2).dataType, "[String]"); Assert.assertEquals(cm.vars.get(3).dataType, "[Double?]"); - Assert.assertEquals(cm.vars.get(4).dataType, "Set"); - Assert.assertEquals(cm.vars.get(5).dataType, "[[String?]]"); + Assert.assertEquals(cm.vars.get(4).dataType, "[String?]"); + Assert.assertEquals(cm.vars.get(5).dataType, "[String?]"); + Assert.assertEquals(cm.vars.get(6).dataType, "Set"); + Assert.assertEquals(cm.vars.get(7).dataType, "[[String?]]"); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java index dd50c9e1fdcd..662fbe16fc5c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java @@ -509,21 +509,27 @@ public void testNullableMap() { @Test(description = "Issue #22355") public void testNullableArrayItems() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml"); + final DefaultCodegen codegen = new Swift6ClientCodegen(); + codegen.setOpenAPI(openAPI); Schema test1 = openAPI.getComponents().getSchemas().get("NullItemsNotNullItems"); - CodegenModel cm1 = swiftCodegen.fromModel("NullItemsNotNullItems", test1); + CodegenModel cm1 = codegen.fromModel("NullItemsNotNullItems", test1); // Assert the dataType properly generated CodegenProperty nullableItems = cm1.vars.get(0); CodegenProperty notNullableItems = cm1.vars.get(1); CodegenProperty defaultItems = cm1.vars.get(2); CodegenProperty nullableDoubleItems = cm1.vars.get(3); - CodegenProperty nullableItemsSet = cm1.vars.get(4); - CodegenProperty nestedNullableItems = cm1.vars.get(5); + CodegenProperty xNullableItems = cm1.vars.get(4); + CodegenProperty aliasedNullableItems = cm1.vars.get(5); + CodegenProperty nullableItemsSet = cm1.vars.get(6); + CodegenProperty nestedNullableItems = cm1.vars.get(7); Assert.assertEquals(nullableItems.getDataType(), "[String?]"); Assert.assertEquals(notNullableItems.getDataType(), "[String]"); Assert.assertEquals(defaultItems.getDataType(), "[String]"); Assert.assertEquals(nullableDoubleItems.getDataType(), "[Double?]"); + Assert.assertEquals(xNullableItems.getDataType(), "[String?]"); + Assert.assertEquals(aliasedNullableItems.getDataType(), "[String?]"); Assert.assertEquals(nullableItemsSet.getDataType(), "Set"); Assert.assertEquals(nestedNullableItems.getDataType(), "[[String?]]"); } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml index 7cb79df8846f..d436d10616d9 100644 --- a/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml @@ -26,6 +26,15 @@ components: type: number format: double nullable: true + xNullableItems: + type: array + items: + type: string + x-nullable: true + aliasedNullableItems: + type: array + items: + $ref: '#/components/schemas/NullableString' nullableItemsSet: type: array uniqueItems: true @@ -39,3 +48,6 @@ components: items: type: string nullable: true + NullableString: + type: string + nullable: true diff --git a/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml b/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml index 7cb79df8846f..d436d10616d9 100644 --- a/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml @@ -26,6 +26,15 @@ components: type: number format: double nullable: true + xNullableItems: + type: array + items: + type: string + x-nullable: true + aliasedNullableItems: + type: array + items: + $ref: '#/components/schemas/NullableString' nullableItemsSet: type: array uniqueItems: true @@ -39,3 +48,6 @@ components: items: type: string nullable: true + NullableString: + type: string + nullable: true From ecc7b3f5dccf87c625bd81001ff85601df7a7463 Mon Sep 17 00:00:00 2001 From: HarelM Date: Tue, 25 Aug 2026 12:08:56 +0300 Subject: [PATCH 3/3] Update for nullable references --- .../codegen/languages/Swift5ClientCodegen.java | 3 ++- .../codegen/languages/Swift6ClientCodegen.java | 3 ++- .../codegen/swift5/Swift5ClientCodegenTest.java | 4 +++- .../codegen/swift6/Swift6ClientCodegenTest.java | 2 ++ .../src/test/resources/3_0/issue_22355.yaml | 10 ++++++++++ .../3_0/swift6/issue22355-nullable-array-items.yaml | 10 ++++++++++ 6 files changed, 29 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java index cd24688b628a..7d2a1d9d5154 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java @@ -780,7 +780,8 @@ public String getTypeDeclaration(Schema p) { private String getItemsTypeDeclaration(Schema items) { String itemsTypeDeclaration = getTypeDeclaration(items); - String nullable = ModelUtils.isNullable(unaliasSchema(items)) && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; + Schema itemsSchema = ModelUtils.getReferencedSchema(openAPI, unaliasSchema(items)); + String nullable = ModelUtils.isNullable(itemsSchema) && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; return itemsTypeDeclaration + nullable; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java index 9f6df7ef4283..7cd975547f2c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift6ClientCodegen.java @@ -826,7 +826,8 @@ public String getTypeDeclaration(Schema p) { private String getItemsTypeDeclaration(Schema items) { String itemsTypeDeclaration = getTypeDeclaration(items); - String nullable = ModelUtils.isNullable(unaliasSchema(items)) && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; + Schema itemsSchema = ModelUtils.getReferencedSchema(openAPI, unaliasSchema(items)); + String nullable = ModelUtils.isNullable(itemsSchema) && !itemsTypeDeclaration.endsWith("?") ? "?" : ""; return itemsTypeDeclaration + nullable; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java index c48afe722762..ec64a91269d1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5ClientCodegenTest.java @@ -418,7 +418,7 @@ public void nullableArrayItemsTest() { final String model = "NullItemsNotNullItems"; final CodegenModel cm = codegen.fromModel(model, openAPI.getComponents().getSchemas().get(model)); - Assert.assertEquals(cm.vars.size(), 8); + Assert.assertEquals(cm.vars.size(), 9); Assert.assertEquals(cm.vars.get(0).baseName, "nullableItems"); Assert.assertEquals(cm.vars.get(1).baseName, "notNullableItems"); @@ -428,6 +428,7 @@ public void nullableArrayItemsTest() { Assert.assertEquals(cm.vars.get(5).baseName, "aliasedNullableItems"); Assert.assertEquals(cm.vars.get(6).baseName, "nullableItemsSet"); Assert.assertEquals(cm.vars.get(7).baseName, "nestedNullableItems"); + Assert.assertEquals(cm.vars.get(8).baseName, "modelRefNullableItems"); Assert.assertEquals(cm.vars.get(0).dataType, "[String?]"); Assert.assertEquals(cm.vars.get(1).dataType, "[String]"); @@ -437,6 +438,7 @@ public void nullableArrayItemsTest() { Assert.assertEquals(cm.vars.get(5).dataType, "[String?]"); Assert.assertEquals(cm.vars.get(6).dataType, "Set"); Assert.assertEquals(cm.vars.get(7).dataType, "[[String?]]"); + Assert.assertEquals(cm.vars.get(8).dataType, "[NullablePet?]"); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java index 662fbe16fc5c..dfd3cd8796ac 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift6/Swift6ClientCodegenTest.java @@ -524,6 +524,7 @@ public void testNullableArrayItems() { CodegenProperty aliasedNullableItems = cm1.vars.get(5); CodegenProperty nullableItemsSet = cm1.vars.get(6); CodegenProperty nestedNullableItems = cm1.vars.get(7); + CodegenProperty modelRefNullableItems = cm1.vars.get(8); Assert.assertEquals(nullableItems.getDataType(), "[String?]"); Assert.assertEquals(notNullableItems.getDataType(), "[String]"); Assert.assertEquals(defaultItems.getDataType(), "[String]"); @@ -532,5 +533,6 @@ public void testNullableArrayItems() { Assert.assertEquals(aliasedNullableItems.getDataType(), "[String?]"); Assert.assertEquals(nullableItemsSet.getDataType(), "Set"); Assert.assertEquals(nestedNullableItems.getDataType(), "[[String?]]"); + Assert.assertEquals(modelRefNullableItems.getDataType(), "[NullablePet?]"); } } diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml index d436d10616d9..ac92095767d5 100644 --- a/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/issue_22355.yaml @@ -48,6 +48,16 @@ components: items: type: string nullable: true + modelRefNullableItems: + type: array + items: + $ref: '#/components/schemas/NullablePet' NullableString: type: string nullable: true + NullablePet: + type: object + nullable: true + properties: + name: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml b/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml index d436d10616d9..ac92095767d5 100644 --- a/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/swift6/issue22355-nullable-array-items.yaml @@ -48,6 +48,16 @@ components: items: type: string nullable: true + modelRefNullableItems: + type: array + items: + $ref: '#/components/schemas/NullablePet' NullableString: type: string nullable: true + NullablePet: + type: object + nullable: true + properties: + name: + type: string