Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,15 @@ abstract class MemberShapeDecodeXMLGenerator(
when (nestedMemberTarget) {
is ListShape -> {
renderNestedListMemberTarget(nestedMemberTarget, nestedContainerName, nestedMemberBuffer, level + 1)
writer.write("$memberBuffer?.$insertMethod($nestedMemberBuffer)")
writer.openBlock("if let $nestedMemberBuffer = $nestedMemberBuffer {", "}") {
writer.write("$memberBuffer?.$insertMethod($nestedMemberBuffer)")
}
}
is MapShape -> {
renderMapEntry(nestedMemberTarget, nestedContainerName, "entry", nestedMemberBuffer, level + 1)
writer.write("$memberBuffer?.$insertMethod($nestedMemberBuffer)")
writer.openBlock("if let $nestedMemberBuffer = $nestedMemberBuffer {", "}") {
writer.write("$memberBuffer?.$insertMethod($nestedMemberBuffer)")
}
}
is SetShape -> {
renderNestedListMemberTarget(nestedMemberTarget, nestedContainerName, nestedMemberBuffer, level + 1)
Expand Down Expand Up @@ -304,7 +308,7 @@ abstract class MemberShapeDecodeXMLGenerator(
val mappedSymbol = when (shape) {
is ListShape -> {
val nestedShape = ctx.model.expectShape(shape.member.target)
"[${convertListSymbolName(nestedShape)}]?"
"[${convertListSymbolName(nestedShape)}]"
}
is SetShape -> {
val nestedShape = ctx.model.expectShape(shape.member.target)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,7 @@ abstract class MemberShapeEncodeXMLGenerator(
writer.openBlock("for $nestedMemberTargetName in $memberName {", "}") {
when (nestedMemberTarget) {
is CollectionShape -> {
val isBoxed = ctx.symbolProvider.toSymbol(nestedMemberTarget).isBoxed()
if (isBoxed && !(nestedMemberTarget is SetShape)) {
writer.openBlock("if let $nestedMemberTargetName = $nestedMemberTargetName {", "}") {
renderNestedListEntryMember(nestedMemberTargetName, nestedMemberTarget, nestedMember, nestedMemberResolvedName, containerName, level)
}
} else {
renderNestedListEntryMember(nestedMemberTargetName, nestedMemberTarget, nestedMember, nestedMemberResolvedName, containerName, level)
}
renderNestedListEntryMember(nestedMemberTargetName, nestedMemberTarget, nestedMember, nestedMemberResolvedName, containerName, level)
}
is MapShape -> {
val nestedContainerName = "${memberName}Container$level"
Expand Down Expand Up @@ -309,22 +302,10 @@ abstract class MemberShapeEncodeXMLGenerator(
level: Int,
nextRenderer: (String) -> Unit
) {
val isBoxed = ctx.symbolProvider.toSymbol(valueTargetShape).isBoxed()
val nextContainer = "valueContainer${level + 1}"
if (isBoxed && !(valueTargetShape is SetShape)) {
writer.openBlock("if let ${nestedKeyValueName.second} = ${nestedKeyValueName.second} {", "}") {
writer.write("var $nextContainer = $entryContainerName.nestedContainer(keyedBy: Key.self, forKey: Key(\"${resolvedCodingKeys.second}\"))")
XMLNamespaceTraitGenerator.construct(mapShape.value)?.render(writer, nextContainer)?.appendKey(xmlNamespaces)
nextRenderer(nextContainer)
}
} else {
// Todo: Write a unit test for this
writer.openBlock("if let ${nestedKeyValueName.second} = ${nestedKeyValueName.second} {", "}") {
writer.write("var $nextContainer = $entryContainerName.nestedContainer(keyedBy: Key.self, forKey: Key(\"${resolvedCodingKeys.second}\"))")
XMLNamespaceTraitGenerator.construct(mapShape.value)?.render(writer, nextContainer)?.appendKey(xmlNamespaces)
nextRenderer(nextContainer)
}
}
writer.write("var $nextContainer = $entryContainerName.nestedContainer(keyedBy: Key.self, forKey: Key(\"${resolvedCodingKeys.second}\"))")
XMLNamespaceTraitGenerator.construct(mapShape.value)?.render(writer, nextContainer)?.appendKey(xmlNamespaces)
nextRenderer(nextContainer)
}

fun renderTimestampMember(member: MemberShape, memberTarget: TimestampShape, containerName: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,19 @@ class BlobDecodeXMLGenerationTests {
struct KeyVal0{struct member{}}
let nestedBlobListWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey<KeyVal0.member>.CodingKeys.self, forKey: .nestedBlobList)
if let nestedBlobListWrappedContainer = nestedBlobListWrappedContainer {
let nestedBlobListContainer = try nestedBlobListWrappedContainer.decodeIfPresent([[Data]?].self, forKey: .member)
var nestedBlobListBuffer:[[Data]?]? = nil
let nestedBlobListContainer = try nestedBlobListWrappedContainer.decodeIfPresent([[Data]].self, forKey: .member)
var nestedBlobListBuffer:[[Data]]? = nil
if let nestedBlobListContainer = nestedBlobListContainer {
nestedBlobListBuffer = [[Data]?]()
nestedBlobListBuffer = [[Data]]()
var listBuffer0: [Data]? = nil
for listContainer0 in nestedBlobListContainer {
listBuffer0 = [Data]()
if let listContainer0 = listContainer0 {
for blobContainer1 in listContainer0 {
listBuffer0?.append(blobContainer1)
}
for blobContainer1 in listContainer0 {
listBuffer0?.append(blobContainer1)
}
if let listBuffer0 = listBuffer0 {
nestedBlobListBuffer?.append(listBuffer0)
}
nestedBlobListBuffer?.append(listBuffer0)
}
}
nestedBlobList = nestedBlobListBuffer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,9 @@ class BlobEncodeXMLGenerationTests {
if let nestedBlobList = nestedBlobList {
var nestedBlobListContainer = container.nestedContainer(keyedBy: Key.self, forKey: Key("nestedBlobList"))
for nestedbloblist0 in nestedBlobList {
if let nestedbloblist0 = nestedbloblist0 {
var nestedbloblist0Container0 = nestedBlobListContainer.nestedContainer(keyedBy: Key.self, forKey: Key("member"))
for blob1 in nestedbloblist0 {
try nestedbloblist0Container0.encode(blob1, forKey: Key("member"))
}
var nestedbloblist0Container0 = nestedBlobListContainer.nestedContainer(keyedBy: Key.self, forKey: Key("member"))
for blob1 in nestedbloblist0 {
try nestedbloblist0Container0.encode(blob1, forKey: Key("member"))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,19 +72,19 @@ class EnumDecodeXMLGenerationTests {
struct KeyVal0{struct member{}}
let nestedEnumsListWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey<KeyVal0.member>.CodingKeys.self, forKey: .nestedEnumsList)
if let nestedEnumsListWrappedContainer = nestedEnumsListWrappedContainer {
let nestedEnumsListContainer = try nestedEnumsListWrappedContainer.decodeIfPresent([[FooEnum]?].self, forKey: .member)
var nestedEnumsListBuffer:[[FooEnum]?]? = nil
let nestedEnumsListContainer = try nestedEnumsListWrappedContainer.decodeIfPresent([[FooEnum]].self, forKey: .member)
var nestedEnumsListBuffer:[[FooEnum]]? = nil
if let nestedEnumsListContainer = nestedEnumsListContainer {
nestedEnumsListBuffer = [[FooEnum]?]()
nestedEnumsListBuffer = [[FooEnum]]()
var listBuffer0: [FooEnum]? = nil
for listContainer0 in nestedEnumsListContainer {
listBuffer0 = [FooEnum]()
if let listContainer0 = listContainer0 {
for stringContainer1 in listContainer0 {
listBuffer0?.append(stringContainer1)
}
for stringContainer1 in listContainer0 {
listBuffer0?.append(stringContainer1)
}
if let listBuffer0 = listBuffer0 {
nestedEnumsListBuffer?.append(listBuffer0)
}
nestedEnumsListBuffer?.append(listBuffer0)
}
}
nestedEnumsList = nestedEnumsListBuffer
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,9 @@ class EnumEncodeXMLGenerationTests {
if let nestedEnumsList = nestedEnumsList {
var nestedEnumsListContainer = container.nestedContainer(keyedBy: Key.self, forKey: Key("nestedEnumsList"))
for nestedenumslist0 in nestedEnumsList {
if let nestedenumslist0 = nestedenumslist0 {
var nestedenumslist0Container0 = nestedEnumsListContainer.nestedContainer(keyedBy: Key.self, forKey: Key("member"))
for fooenum1 in nestedenumslist0 {
try nestedenumslist0Container0.encode(fooenum1, forKey: Key("member"))
}
var nestedenumslist0Container0 = nestedEnumsListContainer.nestedContainer(keyedBy: Key.self, forKey: Key("member"))
for fooenum1 in nestedenumslist0 {
try nestedenumslist0Container0.encode(fooenum1, forKey: Key("member"))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,19 @@ class ListDecodeXMLGenerationTests {
struct KeyVal0{struct item{}}
let renamedListMembersWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CollectionMemberCodingKey<KeyVal0.item>.CodingKeys.self, forKey: .renamedListMembers)
if let renamedListMembersWrappedContainer = renamedListMembersWrappedContainer {
let renamedListMembersContainer = try renamedListMembersWrappedContainer.decodeIfPresent([[String]?].self, forKey: .member)
var renamedListMembersBuffer:[[String]?]? = nil
let renamedListMembersContainer = try renamedListMembersWrappedContainer.decodeIfPresent([[String]].self, forKey: .member)
var renamedListMembersBuffer:[[String]]? = nil
if let renamedListMembersContainer = renamedListMembersContainer {
renamedListMembersBuffer = [[String]?]()
renamedListMembersBuffer = [[String]]()
var listBuffer0: [String]? = nil
for listContainer0 in renamedListMembersContainer {
listBuffer0 = [String]()
if let listContainer0 = listContainer0 {
for stringContainer1 in listContainer0 {
listBuffer0?.append(stringContainer1)
}
for stringContainer1 in listContainer0 {
listBuffer0?.append(stringContainer1)
}
if let listBuffer0 = listBuffer0 {
renamedListMembersBuffer?.append(listBuffer0)
}
renamedListMembersBuffer?.append(listBuffer0)
}
}
renamedListMembers = renamedListMembersBuffer
Expand Down Expand Up @@ -239,26 +239,26 @@ class ListDecodeXMLGenerationTests {
if containerValues.contains(.nestedNestedStringList) {
let nestedNestedStringListWrappedContainer = containerValues.nestedContainerNonThrowable(keyedBy: CodingKeys.self, forKey: .nestedNestedStringList)
if nestedNestedStringListWrappedContainer != nil {
let nestedNestedStringListContainer = try containerValues.decodeIfPresent([[[String]?]?].self, forKey: .nestedNestedStringList)
var nestedNestedStringListBuffer:[[[String]?]?]? = nil
let nestedNestedStringListContainer = try containerValues.decodeIfPresent([[[String]]].self, forKey: .nestedNestedStringList)
var nestedNestedStringListBuffer:[[[String]]]? = nil
if let nestedNestedStringListContainer = nestedNestedStringListContainer {
nestedNestedStringListBuffer = [[[String]?]?]()
var listBuffer0: [[String]?]? = nil
nestedNestedStringListBuffer = [[[String]]]()
var listBuffer0: [[String]]? = nil
for listContainer0 in nestedNestedStringListContainer {
listBuffer0 = [[String]?]()
if let listContainer0 = listContainer0 {
var listBuffer1: [String]? = nil
for listContainer1 in listContainer0 {
listBuffer1 = [String]()
if let listContainer1 = listContainer1 {
for stringContainer2 in listContainer1 {
listBuffer1?.append(stringContainer2)
}
}
listBuffer0 = [[String]]()
var listBuffer1: [String]? = nil
for listContainer1 in listContainer0 {
listBuffer1 = [String]()
for stringContainer2 in listContainer1 {
listBuffer1?.append(stringContainer2)
}
if let listBuffer1 = listBuffer1 {
listBuffer0?.append(listBuffer1)
}
}
nestedNestedStringListBuffer?.append(listBuffer0)
if let listBuffer0 = listBuffer0 {
nestedNestedStringListBuffer?.append(listBuffer0)
}
}
}
nestedNestedStringList = nestedNestedStringListBuffer
Expand Down Expand Up @@ -293,9 +293,9 @@ class ListDecodeXMLGenerationTests {
if let myListWrappedContainer = myListWrappedContainer {
struct KeyVal0{struct key{}; struct value{}}
let myListContainer = try myListWrappedContainer.decodeIfPresent([MapEntry<String, String, KeyVal0.key, KeyVal0.value>].self, forKey: .member)
var myListBuffer:[[String:String]?]? = nil
var myListBuffer:[[String:String]]? = nil
if let myListContainer = myListContainer {
myListBuffer = [[String:String]?]()
myListBuffer = [[String:String]]()
var mapBuffer0: [String:String]? = nil
for mapContainer0 in myListContainer {
mapBuffer0 = [String:String]()
Expand All @@ -304,7 +304,9 @@ class ListDecodeXMLGenerationTests {
mapBuffer0?[stringContainer2.key] = stringContainer2.value
}
}
myListBuffer?.append(mapBuffer0)
if let mapBuffer0 = mapBuffer0 {
myListBuffer?.append(mapBuffer0)
}
}
}
myList = myListBuffer
Expand Down Expand Up @@ -339,9 +341,9 @@ class ListDecodeXMLGenerationTests {
if myListWrappedContainer != nil {
struct KeyVal0{struct key{}; struct value{}}
let myListContainer = try containerValues.decodeIfPresent([MapEntry<String, String, KeyVal0.key, KeyVal0.value>].self, forKey: .myList)
var myListBuffer:[[String:String]?]? = nil
var myListBuffer:[[String:String]]? = nil
if let myListContainer = myListContainer {
myListBuffer = [[String:String]?]()
myListBuffer = [[String:String]]()
var mapBuffer0: [String:String]? = nil
for mapContainer0 in myListContainer {
mapBuffer0 = [String:String]()
Expand All @@ -350,7 +352,9 @@ class ListDecodeXMLGenerationTests {
mapBuffer0?[stringContainer2.key] = stringContainer2.value
}
}
myListBuffer?.append(mapBuffer0)
if let mapBuffer0 = mapBuffer0 {
myListBuffer?.append(mapBuffer0)
}
}
}
myList = myListBuffer
Expand Down
Loading