blob: 7198dce96427968c7bf81e898e3c95ffaa947291 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# Test to ensure TEventHandler is '.closure'
# bug #1187
type
TEventArgs* = object
skip*: bool
TEventHandler[T] = proc (e: var TEventArgs, data: T) {.closure.}
TEvent*[T] = object
#handlers: seq[TEventHandler[T]] # Does not work
handlers: seq[proc (e: var TEventArgs, data: T) {.closure.}] # works
TData = object
x: int
TSomething = object
s: TEvent[TData]
proc init*[T](e: var TEvent[T]) =
e.handlers.newSeq(0)
#proc add*[T](e: var TEvent[T], h: proc (e: var TEventArgs, data: T) {.closure.}) =
# this line works
proc add*[T](e: var TEvent[T], h: TEventHandler[T]) =
# this line does not work
e.handlers.add(h)
proc main () =
var something: TSomething
something.s.init()
var fromOutside = 4711
something.s.add() do (e: var TEventArgs, data: TData):
var x = data.x
x = fromOutside
main()
|