Skip to content

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

Description

@Wertzui123

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggood first issueGood for newcomers
    No fields configured for issues without a type.

    Projects

    Status
    Ready

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions