parent
2fdba334da
commit
1a77040278
2 changed files with 79 additions and 1 deletions
|
|
@ -2117,7 +2117,7 @@ proc paramTypesMatchAux(m: var TCandidate, f, a: PType,
|
||||||
# lift do blocks without params to lambdas
|
# lift do blocks without params to lambdas
|
||||||
let p = c.graph
|
let p = c.graph
|
||||||
let lifted = c.semExpr(c, newProcNode(nkDo, argOrig.info, body = argOrig,
|
let lifted = c.semExpr(c, newProcNode(nkDo, argOrig.info, body = argOrig,
|
||||||
params = p.emptyNode, name = p.emptyNode, pattern = p.emptyNode,
|
params = nkFormalParams.newTree(p.emptyNode), name = p.emptyNode, pattern = p.emptyNode,
|
||||||
genericParams = p.emptyNode, pragmas = p.emptyNode, exceptions = p.emptyNode), {})
|
genericParams = p.emptyNode, pragmas = p.emptyNode, exceptions = p.emptyNode), {})
|
||||||
if f.kind == tyBuiltInTypeClass:
|
if f.kind == tyBuiltInTypeClass:
|
||||||
inc m.genericMatches
|
inc m.genericMatches
|
||||||
|
|
|
||||||
78
tests/misc/tlambdadonotation.nim
Normal file
78
tests/misc/tlambdadonotation.nim
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
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()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue