Skip to content

Commit 051904a

Browse files
authored
fix: Don't supply a default value when reading a non-optional value (#840)
1 parent 6793bc4 commit 051904a

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/serde/member/MemberShapeDecodeGenerator.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ open class MemberShapeDecodeGenerator(
7272
else -> renderMemberExp(member, isPayload)
7373
}
7474
val memberName = ctx.symbolProvider.toMemberName(member)
75-
if (shapeContainingMembers.isUnionShape) {
75+
if (decodingUnion) {
7676
writer.write("return .\$L(\$L)", memberName, readExp)
7777
} else if (shapeContainingMembers.isError) {
7878
writer.write("value.properties.\$L = \$L", memberName, readExp)
@@ -148,7 +148,7 @@ open class MemberShapeDecodeGenerator(
148148
}
149149

150150
private fun readMethodName(baseName: String): String {
151-
val extension = "".takeIf { shapeContainingMembers.isUnionShape } ?: "IfPresent"
151+
val extension = "".takeIf { decodingUnion } ?: "IfPresent"
152152
return writer.format("\$L\$L", baseName, extension)
153153
}
154154

@@ -158,6 +158,9 @@ open class MemberShapeDecodeGenerator(
158158
}
159159

160160
private fun default(memberShape: MemberShape): String {
161+
// If decoding the member of a union, then no default is needed.
162+
if (decodingUnion) { return "" }
163+
161164
val targetShape = ctx.model.expectShape(memberShape.target)
162165
val defaultTrait = memberShape.getTrait<DefaultTrait>() ?: targetShape.getTrait<DefaultTrait>()
163166
val requiredTrait = memberShape.getTrait<RequiredTrait>()
@@ -290,4 +293,6 @@ open class MemberShapeDecodeGenerator(
290293
)
291294
}
292295
}
296+
297+
private var decodingUnion: Boolean = shapeContainingMembers.isUnionShape
293298
}

0 commit comments

Comments
 (0)