mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 05:23:20 +00:00
fixes #5327
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user