12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- discard """
- output: '''
- issue #11812
- issue #10899
- 123
- issue #11367
- event consumed!
- '''
- """
- echo "issue #11812"
- proc run(a: proc()) = a()
- proc main() =
- var test: int
- run(proc() = test = 0)
- run do:
- test = 0
- main()
- echo "issue #10899"
- proc foo(x: proc {.closure.}) =
- x()
- proc bar =
- var x = 123
- # foo proc = echo x #[ ok ]#
- foo: echo x #[ SIGSEGV: Illegal storage access. (Attempt to read from nil?) ]#
- bar()
- echo "issue #11367"
- type
- EventCB = proc()
- Emitter = object
- cb: EventCB
- Subscriber = object
- discard
- proc newEmitter(): Emitter =
- result
- proc on_event(self: var Emitter, cb: EventCB) =
- self.cb = cb
- proc emit(self: Emitter) =
- self.cb()
- proc newSubscriber(): Subscriber =
- result
- proc consume(self: Subscriber) =
- echo "event consumed!"
- proc main2() =
- var emitter = newEmitter()
- var subscriber = newSubscriber()
- proc foo() =
- subscriber.consume()
- emitter.on_event() do:
- subscriber.consume()
- # this works
- # emitter.on_event(foo)
- emitter.emit()
- main2()
|