aspl-lang/aspl

compiler: callback invocation wrappers are not generated for callbacks that are never actually instantiated in the C backend

開放

#32 建立於 2026年5月5日

 (0 則留言) (0 個反應) (0 位負責人)C (6 個分叉)auto 404
buggood first issue

倉庫指標

星標
 (30 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

Bug description

The C backend of the ASPL compiler generates so-called "wrapper functions" for the invocation of callbacks; however, these functions are currently only generated for callbacks that are actually instantiated at least once in the codebase and not for callbacks that are only ever used as types. And while these wrapper functions are not really needed in the sense that they can never be called if the callback is never instantiated anyway, they are actually necessary for the C code output to compile, as the C compiler cannot know that they can never legally be called.

Reproducing instructions

The above explanation of the bug was very abstract, yet reproducing (and understanding) it is actually quite straight-forward:

var callback? cb = null
if(cb != null){
    cb?!.()
}
$ aspl -backend c run .

Expected behaviour

The above code should compile and run without any problems.

Environment

No response

Additional context

No response

Contributing guidelines

  • I agree to follow this project's contributing guidelines

貢獻者指南