From 70655a959bd673f51e0d3fc4487affb3930d39d4 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Tue, 28 Feb 2023 22:03:19 -0600 Subject: [PATCH] preserves_schema_nim: emit Perserve type for And composites --- preserves.nimble | 2 +- src/preserves/preserves_schema_nim.nim | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/preserves.nimble b/preserves.nimble index 6644b0d..b73825d 100644 --- a/preserves.nimble +++ b/preserves.nimble @@ -1,6 +1,6 @@ # Package -version = "20221213" +version = "20230228" author = "Emery Hemingway" description = "data model and serialization format" license = "Unlicense" diff --git a/src/preserves/preserves_schema_nim.nim b/src/preserves/preserves_schema_nim.nim index f2f224b..8c3bc5d 100644 --- a/src/preserves/preserves_schema_nim.nim +++ b/src/preserves/preserves_schema_nim.nim @@ -493,7 +493,10 @@ proc typeDef(loc: Location; name: string; def: Definition; ty: PNode): PNode = embeddingParams(loc.schema, isEmbedded(loc, def)), ty) of DefinitionKind.and: - raiseAssert "And variants not suported" + nn(nkTypeDef, + name.ident.toExport, + embeddingParams(loc.schema, isEmbedded(loc, def)), + preserveIdent(loc.schema)) of DefinitionKind.Pattern: typeDef(loc, name, def.pattern, ty) @@ -675,7 +678,8 @@ proc nimTypeOf(loc: Location; known: var TypeTable; def: Definition; name: strin case def.orKind of DefinitionKind.or: nimTypeOf(loc, known, def.or, name) - of DefinitionKind.and: raiseAssert """"And" definitions are unsupported""" + of DefinitionKind.and: + TypeSpec(node: preserveIdent(loc.schema)) of DefinitionKind.Pattern: nimTypeOf(loc, known, def.pattern, name)