This commit is contained in:
Araq
2013-03-24 13:05:19 +01:00
parent dcb0f243de
commit ba80bd807c
5 changed files with 72 additions and 12 deletions

33
tests/gc/closureleak.nim Normal file
View File

@@ -0,0 +1,33 @@
discard """
outputsub: "true"
"""
from strutils import join
type
TFoo * = object
id: int
func: proc(){.closure.}
var foo_counter = 0
var alive_foos = newseq[int](0)
proc free*(some: ref TFoo) =
#echo "Tfoo #", some.id, " freed"
alive_foos.del alive_foos.find(some.id)
proc newFoo*(): ref TFoo =
new result, free
result.id = foo_counter
alive_foos.add result.id
inc foo_counter
for i in 0 .. <10:
discard newFoo()
for i in 0 .. <10:
let f = newFoo()
f.func = proc =
echo f.id
gc_fullcollect()
echo alive_foos.len <= 2

23
tests/js/test2.nim Normal file
View File

@@ -0,0 +1,23 @@
discard """
cmd: "nimrod js --hints:on -r $# $#"
output: '''foo
js 3.14'''
"""
# This file tests the JavaScript generator
# #335
proc foo() =
var bar = "foo"
proc baz() =
echo bar
baz()
foo()
# #376
when not defined(JS):
proc foo(val: float): string = "no js " & $val
else:
proc foo(val: float): string = "js " & $val
echo foo(3.14)

View File

@@ -131,6 +131,7 @@ proc runGcTests(r: var TResults, options: string) =
test "gcleak3"
test "weakrefs"
test "cycleleak"
test "closureleak"
# ------------------------- threading tests -----------------------------------