mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
33 lines
635 B
Nim
33 lines
635 B
Nim
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()
|