Fix getCustomPragmaVal on var fields

This commit is contained in:
LemonBoy
2019-02-05 15:24:19 +01:00
committed by Andreas Rumpf
parent c174d09245
commit 26255c72fd
2 changed files with 7 additions and 1 deletions

View File

@@ -1415,7 +1415,8 @@ proc customPragmaNode(n: NimNode): NimNode =
if n.kind in {nnkDotExpr, nnkCheckedFieldExpr}:
let name = $(if n.kind == nnkCheckedFieldExpr: n[0][1] else: n[1])
var typDef = getImpl(getTypeInst(if n.kind == nnkCheckedFieldExpr or n[0].kind == nnkHiddenDeref: n[0][0] else: n[0]))
let typInst = getTypeInst(if n.kind == nnkCheckedFieldExpr or n[0].kind == nnkHiddenDeref: n[0][0] else: n[0])
var typDef = getImpl(if typInst.kind == nnkVarTy: typInst[0] else: typInst)
while typDef != nil:
typDef.expectKind(nnkTypeDef)
let typ = typDef[2]

View File

@@ -61,6 +61,11 @@ block: # A bit more advanced case
assert hasCustomPragma(type(s.field), defaultValue)
proc foo(s: var MySerializable) =
static: assert(s.a.getCustomPragmaVal(defaultValue) == 5)
foo(s)
block: # ref types
type
Node = object of RootObj