override fun render()

in smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/serde/xml/UnionDecodeXMLGenerator.kt [29:65]


    override fun render() {
        val containerName = "containerValues"
        writer.openBlock("public init (from decoder: \$N) throws {", "}", SwiftTypes.Decoder) {
            writer.write("let \$L = try decoder.container(keyedBy: CodingKeys.self)", containerName)
            writer.write("let key = \$L.allKeys.first", containerName)
            writer.openBlock("switch key {", "}") {
                members.forEach { member ->
                    val memberTarget = ctx.model.expectShape(member.target)
                    val memberName = ctx.symbolProvider.toMemberName(member)
                    writer.write("case .\$L:", memberName)
                    writer.indent()
                    when (memberTarget) {
                        is CollectionShape -> {
                            renderListMember(member, memberTarget, containerName)
                        }
                        is MapShape -> {
                            renderMapMember(member, memberTarget, containerName)
                        }
                        is TimestampShape -> {
                            renderTimestampMember(member, memberTarget, containerName)
                        }
                        is BlobShape -> {
                            renderBlobMember(member, memberTarget, containerName)
                        }
                        else -> {
                            renderScalarMember(member, memberTarget, containerName, isUnion = true)
                        }
                    }
                    writer.dedent()
                }
                writer.write("default:")
                writer.indent()
                writer.write("self = .sdkUnknown(\"\")")
                writer.dedent()
            }
        }
    }