Skip to content

Commit 4a1338d

Browse files
authored
fix: Disambiguate .none default values (#926)
1 parent 2375537 commit 4a1338d

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
@@ -219,7 +219,7 @@ open class MemberShapeDecodeGenerator(
219219
}
220220
// Provide a default value dependent on the type.
221221
return when (targetShape) {
222-
is EnumShape -> " ?? .${enumDefaultValue(targetShape, it.expectStringNode().value)}"
222+
is EnumShape -> " ?? ${enumDefaultValue(writer, targetShape, it.expectStringNode().value)}"
223223
is IntEnumShape -> intEnumDefaultValue(it)
224224
is StringShape -> " ?? \"${it.expectStringNode().value}\""
225225
is ByteShape -> " ?? ${it.expectNumberNode().value}"
@@ -250,14 +250,19 @@ open class MemberShapeDecodeGenerator(
250250
// > enum: can be set to any valid string _value_ of the enum.
251251
// So, find the member with the default value, then render it as a Swift enum case.
252252
private fun enumDefaultValue(
253+
writer: SwiftWriter,
253254
enumShape: EnumShape,
254255
value: String,
255256
): String {
256257
val matchingMember =
257258
enumShape.members().first { member ->
258259
value == member.expectTrait<EnumValueTrait>().expectStringValue()
259260
}
260-
return swiftEnumCaseName(matchingMember.memberName, value)
261+
return writer.format(
262+
"\$N.\$L",
263+
ctx.symbolProvider.toSymbol(enumShape),
264+
swiftEnumCaseName(matchingMember.memberName, value),
265+
)
261266
}
262267

263268
private fun intEnumDefaultValue(node: Node): String =

0 commit comments

Comments
 (0)