Skip to content

Commit 193dc5d

Browse files
authored
feat!: Remove Hashable conformance from generated errors & models (#531)
1 parent 1f80a30 commit 193dc5d

File tree

7 files changed

+2
-265
lines changed

7 files changed

+2
-265
lines changed

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/CodegenVisitor.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import software.amazon.smithy.swift.codegen.integration.CustomDebugStringConvert
2525
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
2626
import software.amazon.smithy.swift.codegen.integration.SwiftIntegration
2727
import software.amazon.smithy.swift.codegen.model.AddOperationShapes
28-
import software.amazon.smithy.swift.codegen.model.HashableShapeTransformer
2928
import software.amazon.smithy.swift.codegen.model.NestedShapeTransformer
3029
import software.amazon.smithy.swift.codegen.model.RecursiveShapeBoxer
3130
import software.amazon.smithy.swift.codegen.model.hasTrait
@@ -88,7 +87,6 @@ class CodegenVisitor(context: PluginContext) : ShapeVisitor.Default<Void>() {
8887
var resolvedModel = model
8988
resolvedModel = AddOperationShapes.execute(resolvedModel, settings.getService(resolvedModel), settings.moduleName)
9089
resolvedModel = RecursiveShapeBoxer.transform(resolvedModel)
91-
resolvedModel = HashableShapeTransformer.transform(resolvedModel)
9290
resolvedModel = NestedShapeTransformer.transform(resolvedModel, settings.getService(resolvedModel))
9391
return resolvedModel
9492
}

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/StructureGenerator.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import software.amazon.smithy.model.shapes.StructureShape
1414
import software.amazon.smithy.model.traits.ErrorTrait
1515
import software.amazon.smithy.model.traits.HttpErrorTrait
1616
import software.amazon.smithy.model.traits.RetryableTrait
17-
import software.amazon.smithy.swift.codegen.customtraits.HashableTrait
1817
import software.amazon.smithy.swift.codegen.customtraits.NestedTrait
1918
import software.amazon.smithy.swift.codegen.customtraits.SwiftBoxTrait
2019
import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator
@@ -109,8 +108,7 @@ class StructureGenerator(
109108
private fun generateStruct() {
110109
writer.writeShapeDocs(shape)
111110
writer.writeAvailableAttribute(model, shape)
112-
val needsHashable = if (shape.hasTrait<HashableTrait>()) ", ${SwiftTypes.Protocols.Hashable}" else ""
113-
writer.openBlock("public struct \$struct.name:L: \$N$needsHashable {", SwiftTypes.Protocols.Equatable)
111+
writer.openBlock("public struct \$struct.name:L: \$N {", SwiftTypes.Protocols.Equatable)
114112
.call { generateStructMembers() }
115113
.write("")
116114
.call { generateInitializerForStructure() }

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/UnionGenerator.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ class UnionGenerator(
7171
writer.writeShapeDocs(shape)
7272
writer.writeAvailableAttribute(model, shape)
7373
val indirectKeywordIfNeeded = if (needsIndirectKeyword(unionSymbol.name, shape)) "indirect " else ""
74-
val hashable = hashableIfPossible()
75-
writer.openBlock("public ${indirectKeywordIfNeeded}enum \$union.name:L: \$N$hashable {", "}\n", SwiftTypes.Protocols.Equatable) {
74+
writer.openBlock("public ${indirectKeywordIfNeeded}enum \$union.name:L: \$N {", "}\n", SwiftTypes.Protocols.Equatable) {
7675
shape.allMembers.values.forEach {
7776
writer.writeMemberDocs(model, it)
7877
val enumCaseName = symbolProvider.toMemberName(it)
@@ -84,16 +83,6 @@ class UnionGenerator(
8483
}
8584
}
8685

87-
fun hashableIfPossible(): String {
88-
shape.allMembers.values.forEach {
89-
val enumCaseAssociatedType = symbolProvider.toSymbol(it)
90-
if (enumCaseAssociatedType.name != "String") {
91-
return ""
92-
}
93-
}
94-
return ", ${SwiftTypes.Protocols.Hashable}"
95-
}
96-
9786
private fun needsIndirectKeyword(unionSymbolName: String, shape: UnionShape): Boolean {
9887
val membersReferencingUnion = shape.allMembers.values.filter {
9988
(symbolProvider.toSymbol(it).name).equals(unionSymbolName)

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/customtraits/HashableTrait.kt

Lines changed: 0 additions & 17 deletions
This file was deleted.

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/model/HashableShapeTransformer.kt

Lines changed: 0 additions & 78 deletions
This file was deleted.

smithy-swift-codegen/src/test/kotlin/HashableShapeTransformerTests.kt

Lines changed: 0 additions & 151 deletions
This file was deleted.

smithy-swift-codegen/src/test/kotlin/UnionEncodeGeneratorTests.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import org.junit.jupiter.api.Assertions
88
import org.junit.jupiter.api.Test
99
import software.amazon.smithy.model.Model
1010
import software.amazon.smithy.swift.codegen.model.AddOperationShapes
11-
import software.amazon.smithy.swift.codegen.model.HashableShapeTransformer
1211
import software.amazon.smithy.swift.codegen.model.NestedShapeTransformer
1312
import software.amazon.smithy.swift.codegen.model.RecursiveShapeBoxer
1413

@@ -23,7 +22,6 @@ class UnionEncodeGeneratorTests {
2322
var resolvedModel = model
2423
resolvedModel = AddOperationShapes.execute(resolvedModel, settings.getService(resolvedModel), settings.moduleName)
2524
resolvedModel = RecursiveShapeBoxer.transform(resolvedModel)
26-
resolvedModel = HashableShapeTransformer.transform(resolvedModel)
2725
resolvedModel = NestedShapeTransformer.transform(resolvedModel, settings.getService(resolvedModel))
2826
return resolvedModel
2927
}

0 commit comments

Comments
 (0)