diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index b8c206bb30..abb88b7b93 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -518,9 +518,9 @@ proc genCall(c: PCtx; n: PNode; dest: var TDest) = # varargs need 'opcSetType' for the FFI support: let fntyp = skipTypes(n.sons[0].typ, abstractInst) for i in 0.. 0 and i < sonsLen(fntyp): - let paramType = fntyp.n.sons[i] - if paramType.typ.isCompileTimeOnly: continue + #if i > 0 and i < sonsLen(fntyp): + # let paramType = fntyp.n.sons[i] + # if paramType.typ.isCompileTimeOnly: continue var r: TRegister = x+i c.gen(n.sons[i], r) if i >= fntyp.len: @@ -1797,6 +1797,8 @@ proc gen(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags = {}) = genConv(c, n, n.sons[1], dest, opcCast) else: globalError(n.info, errGenerated, "VM is not allowed to 'cast'") + of nkTypeOfExpr: + genTypeLit(c, n.typ, dest) else: globalError(n.info, errGenerated, "cannot generate VM code for " & $n) diff --git a/tests/vm/tvmmisc.nim b/tests/vm/tvmmisc.nim index e935013c4f..b7112b0999 100644 --- a/tests/vm/tvmmisc.nim +++ b/tests/vm/tvmmisc.nim @@ -1,5 +1,15 @@ -# 4412 + +# bug #4462 +import macros + +proc foo(t: typedesc) {.compileTime.} = + echo getType(t).treeRepr + +static: + foo(int) + +# #4412 proc default[T](t: typedesc[T]): T {.inline.} = discard static: