diff options
Diffstat (limited to 'compiler/vm.nim')
-rw-r--r-- | compiler/vm.nim | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim index b537700fa..7220e1b8e 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -1590,12 +1590,13 @@ proc evalMacroCall*(module: PSym, n, nOrig: PNode, sym: PSym): PNode = for i in 1.. <sym.typ.len: tos.slots[i] = setupMacroParam(n.sons[i], sym.typ.sons[i]) - if sfImmediate notin sym.flags: - let gp = sym.ast[genericParamsPos] - for i in 0 .. <gp.len: + let gp = sym.ast[genericParamsPos] + for i in 0 .. <gp.len: + if sfImmediate notin sym.flags: let idx = sym.typ.len + i tos.slots[idx] = setupMacroParam(n.sons[idx], gp[i].sym.typ) - + elif gp[i].sym.typ.kind in {tyStatic, tyTypeDesc}: + globalError(n.info, "static[T] or typedesc nor supported for .immediate macros") # temporary storage: #for i in L .. <maxSlots: tos.slots[i] = newNode(nkEmpty) result = rawExecute(c, start, tos).regToNode |