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: