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 合并指标
 (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

贡献者指南