mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 17:34:43 +00:00
* clean up some test categories * mention exact slice issue * magics into system * move trangechecks into overflow * move tmemory to system * try fix CI * try fix CI * final CI fix
79 lines
1.0 KiB
Nim
79 lines
1.0 KiB
Nim
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()
|