Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adjust to upcoming base Julia change #23

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Keno
Copy link

@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.
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.

1 participant