diff --git a/Sources/XMLCoder/Auxiliaries/XMLCoderElement.swift b/Sources/XMLCoder/Auxiliaries/XMLCoderElement.swift index aa478611..d170707d 100644 --- a/Sources/XMLCoder/Auxiliaries/XMLCoderElement.swift +++ b/Sources/XMLCoder/Auxiliaries/XMLCoderElement.swift @@ -252,7 +252,11 @@ struct XMLCoderElement: Equatable { extension XMLCoderElement { init(key: String, box: UnkeyedBox) { self.init(key: key, elements: box.map { - XMLCoderElement(key: "", box: $0) + if $0 is KeyedBox { + return XMLCoderElement(key: "", box: $0) + } else { + return XMLCoderElement(key: key, box: $0) + } }) } diff --git a/Tests/XMLCoderTests/EnumAssociatedValueTestSimple.swift b/Tests/XMLCoderTests/EnumAssociatedValueTestSimple.swift index 05c4e356..f5a0265d 100644 --- a/Tests/XMLCoderTests/EnumAssociatedValueTestSimple.swift +++ b/Tests/XMLCoderTests/EnumAssociatedValueTestSimple.swift @@ -14,7 +14,6 @@ private enum IntOrString { } extension IntOrString: Codable { - enum CodingKeys: String, CodingKey { case int case string @@ -23,9 +22,9 @@ extension IntOrString: Codable { func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) switch self { - case .int(let value): + case let .int(value): try container.encode(value, forKey: .int) - case .string(let value): + case let .string(value): try container.encode(value, forKey: .string) } }