fixes #5327
This commit is contained in:
parent
4ac6a26031
commit
26fb6cb073
3 changed files with 45 additions and 6 deletions
|
|
@ -559,7 +559,8 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
|||
if regs[rb].node.kind == nkRefTy:
|
||||
regs[ra].node = regs[rb].node.sons[0]
|
||||
else:
|
||||
stackTrace(c, tos, pc, errGenerated, "limited VM support for pointers")
|
||||
ensureKind(rkNode)
|
||||
regs[ra].node = regs[rb].node
|
||||
else:
|
||||
stackTrace(c, tos, pc, errNilAccess)
|
||||
of opcWrDeref:
|
||||
|
|
|
|||
38
tests/vm/tableinstatic.nim
Normal file
38
tests/vm/tableinstatic.nim
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
discard """
|
||||
nimout: '''0
|
||||
0
|
||||
0
|
||||
{hallo: 123, welt: 456}'''
|
||||
"""
|
||||
|
||||
import tables
|
||||
|
||||
# bug #5327
|
||||
|
||||
type
|
||||
MyType* = object
|
||||
counter: int
|
||||
|
||||
proc foo(t: var MyType) =
|
||||
echo t.counter
|
||||
|
||||
proc bar(t: MyType) =
|
||||
echo t.counter
|
||||
|
||||
static:
|
||||
var myValue: MyType
|
||||
myValue.foo # works nicely
|
||||
|
||||
var refValue: ref MyType
|
||||
refValue.new
|
||||
|
||||
refValue[].foo # fails to compile
|
||||
refValue[].bar # works again nicely
|
||||
|
||||
static:
|
||||
var otherTable = newTable[string, string]()
|
||||
|
||||
otherTable["hallo"] = "123"
|
||||
otherTable["welt"] = "456"
|
||||
|
||||
echo otherTable
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
discard """
|
||||
msg: '''2
|
||||
nimout: '''2
|
||||
3
|
||||
4:2
|
||||
Got Hi
|
||||
|
|
@ -13,7 +13,7 @@ import macros, tables, strtabs
|
|||
var ZOOT{.compileTime.} = initTable[int, int](2)
|
||||
var iii {.compiletime.} = 1
|
||||
|
||||
macro zoo:stmt=
|
||||
macro zoo: untyped =
|
||||
ZOOT[iii] = iii*2
|
||||
inc iii
|
||||
echo iii
|
||||
|
|
@ -22,7 +22,7 @@ zoo
|
|||
zoo
|
||||
|
||||
|
||||
macro tupleUnpack: stmt =
|
||||
macro tupleUnpack: untyped =
|
||||
var (y,z) = (4, 2)
|
||||
echo y, ":", z
|
||||
|
||||
|
|
@ -32,14 +32,14 @@ tupleUnpack
|
|||
|
||||
var x {.compileTime.}: StringTableRef
|
||||
|
||||
macro addStuff(stuff, body: expr): stmt {.immediate.} =
|
||||
macro addStuff(stuff, body: untyped): untyped =
|
||||
result = newNimNode(nnkStmtList)
|
||||
|
||||
if x.isNil:
|
||||
x = newStringTable(modeStyleInsensitive)
|
||||
x[$stuff] = ""
|
||||
|
||||
macro dump(): stmt =
|
||||
macro dump(): untyped =
|
||||
result = newNimNode(nnkStmtList)
|
||||
for y in x.keys: echo "Got ", y
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue