diff --git a/src/preserves/private/preserves_schema_nim.nim b/src/preserves/private/preserves_schema_nim.nim index bb90786..282dc72 100644 --- a/src/preserves/private/preserves_schema_nim.nim +++ b/src/preserves/private/preserves_schema_nim.nim @@ -345,13 +345,18 @@ proc generateProcs(result: var seq[PNode]; name: string; sn: SchemaNode) = sn.nodes[0].toNimLit) for i, field in sn.nodes: if i > 0: - let id = field.ident + let + id = field.ident + var fieldType = field.typeIdent + if fieldType.kind != nkIdent or fieldType.ident.s != "Preserve": + fieldType = + nn(nkInfix, + ident"|", + fieldType, + ident"Preserve") params.add nn(nkIdentDefs, id, - nn(nkInfix, - ident"|", - ident"Preserve", - field.typeIdent), + fieldType, newEmpty()) initRecordCall.add( nn(nkCall, ident"toPreserve", id, ident"EmbeddedType"))