From 335dcd298703e0bdf0427cba90440404059b8c85 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sun, 23 Jul 2023 08:26:35 +0100 Subject: [PATCH] Tweak type walking in private/macros --- preserves.nimble | 2 +- src/preserves/private/macros.nim | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/preserves.nimble b/preserves.nimble index 7538ef5..fea3520 100644 --- a/preserves.nimble +++ b/preserves.nimble @@ -1,6 +1,6 @@ # Package -version = "20230720" +version = "20230723" author = "Emery Hemingway" description = "data model and serialization format" license = "Unlicense" diff --git a/src/preserves/private/macros.nim b/src/preserves/private/macros.nim index 407fbc9..60c3601 100644 --- a/src/preserves/private/macros.nim +++ b/src/preserves/private/macros.nim @@ -30,16 +30,16 @@ proc extractTypeImpl(n: NimNode): NimNode = proc customPragmaNode(n: NimNode): NimNode = expectKind(n, {nnkSym, nnkDotExpr, nnkBracketExpr, nnkTypeOfExpr, nnkType, nnkCheckedFieldExpr}) - let + var typ = n.getTypeInst() if typ.kind == nnkBracketExpr and typ.len > 1 and typ[1].kind == nnkProcTy: return typ[1][1] elif typ.typeKind == ntyTypeDesc: - let impl = getImpl( - if kind(typ[1]) == nnkBracketExpr: typ[1][0] - else: typ[1] - ) + typ = typ[1] + while kind(typ) == nnkBracketExpr: + typ = typ[0] + let impl = getImpl(typ) if impl.kind == nnkNilLit: return impl elif impl[0].kind == nnkPragmaExpr: