blob: 1ea3c86b9749b3268b6b9d1026045debc37b48a9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
discard """
action: compile
"""
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)
|