blob: 279581b0f382bcbddc46aa9fe6ed4d44a950cdc4 (
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
|
discard """
output: '''a
[FATAL] dangling references exist
'''
exitCode: 1
cmd: "nim c --newruntime $file"
"""
# bug #11350
type
Node = ref object
data: int
proc use(x: Node) = discard
proc main =
var x = Node(data: 3) # inferred to be an ``owned ref``
var dangling = unown x
assert dangling.data == 3
#use x
#dangling = nil
# reassignment causes the memory of what ``x`` points to to be freed:
echo "a"
x = Node(data: 4)
echo "b"
# accessing 'dangling' here is invalid as it is nil.
# at scope exit the memory of what ``x`` points to is freed
if dangling != nil:
echo dangling.data
main()
|