open fun renderPrimitiveShapeSerializer()

in smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/serde/SerializeStructGenerator.kt [529:549]


    open fun renderPrimitiveShapeSerializer(memberShape: MemberShape, serializerNameFn: (MemberShape) -> SerializeInfo) {
        val (serializeFn, encoded) = serializerNameFn(memberShape)
        val postfix = idempotencyTokenPostfix(memberShape)

        val targetShape = ctx.model.expectShape(memberShape.target)
        val targetSymbol = ctx.symbolProvider.toSymbol(memberShape)
        val defaultValue = targetSymbol.defaultValue()
        val memberName = ctx.symbolProvider.toMemberName(memberShape)

        if ((targetShape.isNumberShape || targetShape.isBooleanShape) && targetSymbol.isNotBoxed && defaultValue != null) {
            // unboxed primitive with a default value
            val ident = "input.$memberName"
            val check = when (memberShape.hasTrait<RequiredTrait>()) {
                true -> "" // always serialize a required member even if it's the default
                else -> "if ($ident != $defaultValue) "
            }
            writer.write("${check}$serializeFn(#L, $ident)", memberShape.descriptorName())
        } else {
            writer.write("input.#L?.let { $serializeFn(#L, $encoded) }$postfix", memberName, memberShape.descriptorName())
        }
    }