blob: aec140f42140d10fe29fd41c7366d437c937fb22 (
plain) (
tree)
|
|
type
Bar = object
x: int
Foo = object
rheap: ref Bar
rmaybe: ref Bar
rstack: ref Bar
list: seq[ref Bar]
listarr: array[0..5, ref Bar]
nestedtup: Tup
inner: TInner
inref: ref TInner
TInner = object
inref: ref Bar
Tup = tuple
tupbar: ref Bar
inner: TInner
proc acc(x: var Foo): var ref Bar =
result = x.rheap
proc test(maybeFoo: var Foo,
maybeSeq: var seq[ref Bar],
bars: var openarray[ref Bar],
maybeTup: var Tup) =
var bb: ref Bar
maybeFoo.rmaybe = bb
maybeFoo.list[3] = bb
maybeFoo.listarr[3] = bb
acc(maybeFoo) = bb
var localFoo: Foo
localFoo.rstack = bb
localFoo.list[3] = bb
localFoo.listarr[3] = bb
acc(localFoo) = bb
var heapFoo: ref Foo
heapFoo.rheap = bb
heapFoo.list[3] = bb
heapFoo.listarr[3] = bb
acc(heapFoo[]) = bb
heapFoo.nestedtup.tupbar = bb
heapFoo.nestedtup.inner.inref = bb
heapFoo.inner.inref = bb
heapFoo.inref.inref = bb
var locseq: seq[ref Bar]
locseq[3] = bb
var locarr: array[0..4, ref Bar]
locarr[3] = bb
maybeSeq[3] = bb
bars[3] = bb
maybeTup[0] = bb
var
ff: ref Foo
tt: Tup
gseq: seq[ref Bar]
new(ff)
test(ff[], gseq, gseq, tt)
|