fix(events): a listener's return ends that listener, not the dispatch
Listeners are compiled into one @ev_<E> function and return branched to its exit, so every listener declared after one that returned early - and every foreign listener - never heard the event. The per-kind listener shape (return unless it is my kind) answered only the first-declared kind. examples/events/answer.ludic holds it; seed regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
45e14dbb99
commit
f5ab5cf88a
8 changed files with 11240 additions and 11128 deletions
|
|
@ -121,7 +121,7 @@ function emit_return(st: Node) -> void {
|
|||
let v = emit_expr(st.a)
|
||||
store_at(llty(ret_ty), coerce_code(v, ret_ty), "%retval")
|
||||
}
|
||||
emit(" br label %ret\n")
|
||||
emit(` br label %{g_ret_label}\n`)
|
||||
g_term = true
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue