From c9c7744531af367e04079b4d08c00435c1241c21 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 6 Sep 2021 15:36:35 +0200 Subject: [PATCH] Do not emit (Preserve | Preserve) types --- src/preserves/private/preserves_schema_nim.nim | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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"))