Make enums generated for alt-types pure

This commit is contained in:
Emery Hemingway 2021-12-04 11:44:18 +00:00
parent 21052681b6
commit 8a85ff5d52
1 changed files with 4 additions and 1 deletions

View File

@ -418,10 +418,13 @@ proc typeDef(scm: Schema; name: string; pat: Pattern; ty: PNode): PNode =
proc typeDef(scm: Schema; name: string; def: Definition; ty: PNode): PNode =
case def.orKind
of DefinitionKind.or:
let pragma = nn(nkPragma, ident"preservesOr")
if isSymbolEnum(scm, def):
pragma.add ident"pure"
nn(nkTypeDef,
nn(nkPragmaExpr,
name.ident.accQuote.toExport,
nn(nkPragma, ident"preservesOr")),
pragma),
embeddingParams(isEmbeddable(scm, def)),
ty)
of DefinitionKind.and: