Skip to content

Conversation

Keno
Copy link
Contributor

@Keno Keno commented Nov 9, 2024

This adjusts the @system macro to be compatible with JuliaLang/julia#56497, which re-orders the point at which a type is published into the bindings table until after it is complete. This package was (uniquely among all julia packages) relying on the binding existing during field definition (via a call to typefor).

Unfortunately, there isn't really a great place to define as the system (currently) does not gurantee an order of the evaluation of field types with respect to other global statements inside the struct evaluation. The only place that satiesfies the criteria that
a) incomplete struct is avilable
b) it is evaluated before any field types
is the supertype declaration, so this PR shoves the definition of typefor there.

This works both before and after the change, although it is quite messy. In the future, there may be a way to forward declare an incomplete type, but for the time being, this is the best I could come up with.

This adjusts the `@system` macro to be compatible with
JuliaLang/julia#56497, which
re-orders the point at which a type is published into
the bindings table until after it is complete. This
package was (uniquely among all julia packages) relying
on the binding existing during field definition (via
a call to `typefor`).

Unfortunately, there isn't really a great place to define
as the system (currently) does not gurantee an order of
the evaluation of field types with respect to other global
statements inside the struct evaluation. The only place
that satiesfies the criteria that
a) incomplete struct is avilable
b) it is evaluated before any field types
is the supertype declaration, so this PR shoves the definition
of `typefor` there.

This works both before and after the change, although
it is quite messy. In the future, there may be a way
to forward declare an incomplete type, but for the time
being, this is the best I could come up with.
@tomyun tomyun merged commit 74ca56c into cropbox:main Apr 11, 2025
@tomyun
Copy link
Member

tomyun commented Apr 11, 2025

Took a while to merge. Thanks for reporting and taking care of this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants