summary refs log blame commit diff stats
path: root/tests/procvar/tprocvar.nim
blob: 14f24efdc405b7381a0cd8af4abc733e20d284b7 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
           


             

   



                                                 
 
 





                                           
 


















                                                                   
 
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