This commit is contained in:
Andreas Rumpf
2016-08-24 11:48:21 +02:00
parent 636e74fe39
commit 18e37cad08
2 changed files with 28 additions and 0 deletions

View File

@@ -670,6 +670,8 @@ proc genDeref(p: BProc, e: PNode, d: var TLoc; enforceDeref=false) =
#if e[0].kind != nkBracketExpr:
# message(e.info, warnUser, "CAME HERE " & renderTree(e))
expr(p, e.sons[0], d)
if e.sons[0].typ.skipTypes(abstractInst).kind == tyRef:
d.s = OnHeap
else:
var a: TLoc
let typ = skipTypes(e.sons[0].typ, abstractInst)

View File

@@ -0,0 +1,26 @@
discard """
output: '''m[0][0] = 1.0
m[0][0] = 2.0'''
"""
# bug #4653
type
Vector = ref array[2, float64]
Matrix = ref array[2, Vector]
proc newVector(): Vector =
new(result)
proc newMatrix(): Matrix =
new(result)
for ix in 0 .. 1:
result[ix] = newVector()
let m = newMatrix()
m[0][0] = 1.0
echo "m[0][0] = ", m[0][0]
GC_fullCollect()
m[0][0] = 2.0
echo "m[0][0] = ", m[0][0]