diff options
Diffstat (limited to 'tests/procvar/tprocvar.nim')
-rw-r--r-- | tests/procvar/tprocvar.nim | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/tests/procvar/tprocvar.nim b/tests/procvar/tprocvar.nim index f523aa391..14f24efdc 100644 --- a/tests/procvar/tprocvar.nim +++ b/tests/procvar/tprocvar.nim @@ -1,18 +1,39 @@ discard """ - errormsg: "type mismatch" - line: 17 - file: "tprocvar.nim" + output: ''' +papbpcpdpe7 +''' """ -type - TCallback = proc (a, b: int) +block genericprocvar: + proc foo[T](thing: T) = + discard thing + var a: proc (thing: int) {.nimcall.} = foo[int] -proc huh(x, y: var int) = - x = 0 - y = x+1 -proc so(c: TCallback) = - c(2, 4) +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") -so(huh) + 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 |