fixes #2022
This commit is contained in:
parent
8f587e2eab
commit
43e5e3ac22
3 changed files with 101 additions and 2 deletions
37
tests/generics/tgeneric_closure.nim
Normal file
37
tests/generics/tgeneric_closure.nim
Normal file
|
|
@ -0,0 +1,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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue