The VM cannot call methods

Fixes #2574
This commit is contained in:
LemonBoy
2018-09-17 19:14:13 +02:00
parent 6dc6ea4146
commit c2e5faf959
2 changed files with 17 additions and 0 deletions

View File

@@ -1842,6 +1842,9 @@ proc gen(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags = {}) =
let s = n.sons[0].sym
if s.magic != mNone:
genMagic(c, n, dest, s.magic)
elif s.kind == skMethod:
localError(c.config, n.info, "cannot call method " & s.name.s &
" at compile time")
elif matches(s, "stdlib", "marshal", "to"):
# XXX marshal load&store should not be opcodes, but use the
# general callback mechanisms.

14
tests/vm/t2574.nim Normal file
View File

@@ -0,0 +1,14 @@
discard """
line: 14
errormsg: "cannot call method eval at compile time"
"""
type
PExpr = ref object of RootObj
method eval(e: PExpr): int =
discard
static:
let x = PExpr()
discard x.eval