fixes #11350
This commit is contained in:
parent
bab1f67971
commit
085a21ebf4
2 changed files with 50 additions and 3 deletions
32
tests/destructor/tdangingref_simple.nim
Normal file
32
tests/destructor/tdangingref_simple.nim
Normal file
|
|
@ -0,0 +1,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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue