diff options
Diffstat (limited to 'tests/procvar')
-rw-r--r-- | tests/procvar/tgenericprocvar.nim | 5 | ||||
-rw-r--r-- | tests/procvar/tprocvar.nim | 43 | ||||
-rw-r--r-- | tests/procvar/tprocvar2.nim | 32 | ||||
-rw-r--r-- | tests/procvar/tprocvarmismatch.nim | 18 | ||||
-rw-r--r-- | tests/procvar/tprocvars.nim | 6 |
5 files changed, 50 insertions, 54 deletions
diff --git a/tests/procvar/tgenericprocvar.nim b/tests/procvar/tgenericprocvar.nim deleted file mode 100644 index e642e3577..000000000 --- a/tests/procvar/tgenericprocvar.nim +++ /dev/null @@ -1,5 +0,0 @@ -proc foo[T](thing: T) = - discard thing - -var a: proc (thing: int) {.nimcall.} = foo[int] - 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 diff --git a/tests/procvar/tprocvar2.nim b/tests/procvar/tprocvar2.nim deleted file mode 100644 index a590bc4bd..000000000 --- a/tests/procvar/tprocvar2.nim +++ /dev/null @@ -1,32 +0,0 @@ -discard """ - file: "tprocvar.nim" - output: "papbpcpdpe7" -""" -# test variables of type proc - -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) - -#OUT papbpcpdpe7 - - - diff --git a/tests/procvar/tprocvarmismatch.nim b/tests/procvar/tprocvarmismatch.nim new file mode 100644 index 000000000..4d6be9be6 --- /dev/null +++ b/tests/procvar/tprocvarmismatch.nim @@ -0,0 +1,18 @@ +discard """ + errormsg: "type mismatch" + line: 17 + file: "tprocvarmismatch.nim" +""" + +type + TCallback = proc (a, b: int) + +proc huh(x, y: var int) = + x = 0 + y = x+1 + +proc so(c: TCallback) = + c(2, 4) + +so(huh) + diff --git a/tests/procvar/tprocvars.nim b/tests/procvar/tprocvars.nim deleted file mode 100644 index 50d5d29f2..000000000 --- a/tests/procvar/tprocvars.nim +++ /dev/null @@ -1,6 +0,0 @@ -proc doSomething(v: int, x: proc(v:int):int): int = return x(v) -proc doSomething(v: int, x: proc(v:int)) = x(v) - - -echo doSomething(10, proc(v: int): int = return v div 2) - |