aspl-lang/aspl

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

Open

#32 opened on May 5, 2026

View on GitHub
 (0 comments) (0 reactions) (0 assignees)C (6 forks)auto 404
buggood first issue

Repository metrics

Stars
 (30 stars)
PR merge metrics
 (PR metrics pending)

Description

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

Contributor guide