diff options
Diffstat (limited to 'tests/proc/tprocvar.nim')
-rw-r--r-- | tests/proc/tprocvar.nim | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/proc/tprocvar.nim b/tests/proc/tprocvar.nim new file mode 100644 index 000000000..14f24efdc --- /dev/null +++ b/tests/proc/tprocvar.nim @@ -0,0 +1,39 @@ +discard """ + output: ''' +papbpcpdpe7 +''' +""" + +block genericprocvar: + proc foo[T](thing: T) = + discard thing + var a: proc (thing: int) {.nimcall.} = foo[int] + + +block tprocvar2: + proc pa() {.cdecl.} = write(stdout, "pa") + proc pb() {.cdecl.} = write(stdout, "pb") + proc pc() {.cdecl.} = write(stdout, "pc") + proc pd() {.cdecl.} = write(stdout, "pd") + proc pe() {.cdecl.} = write(stdout, "pe") + + const algos = [pa, pb, pc, pd, pe] + var x: proc (a, b: int): int {.cdecl.} + + proc ha(c, d: int): int {.cdecl.} = + echo(c + d) + result = c + d + + for a in items(algos): + a() + + x = ha + discard x(3, 4) + + +block tprocvars: + proc doSomething(v: int, x: proc(v:int):int): int = return x(v) + proc doSomething(v: int, x: proc(v:int)) = x(v) + + doAssert doSomething(10, proc(v: int): int = return v div 2) == 5 + |