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

add initial macro expansion protocol #2021

Merged
merged 9 commits into from
Dec 15, 2021
Merged

add initial macro expansion protocol #2021

merged 9 commits into from
Dec 15, 2021

Conversation

jakemac53
Copy link
Contributor

@jakemac53 jakemac53 commented Dec 8, 2021

This adds a MacroExecutor interface which is intended for use by language frontends (cfe, analyzer) in order to load and execute macros, as well as create library augmention files.

This should help more clearly define the role of a frontend when it comes to macros (discovery and introspection), as well as provide a unified api for producing the final library augmentations.

It does not actually write files though, we still need to figure out how we want to coordinate that part, and make sure that the CFE and analyzer can consistently talk about these files.

This also allows for multiple different implementations in terms of how macros are actually loaded and executed, without the frontends having to know about them.

Followup PR here #2022 which starts an implementation using IsolateMirror.loadUri.

working/macros/api/expansion_protocol.dart Show resolved Hide resolved
working/macros/api/expansion_protocol.dart Outdated Show resolved Hide resolved
working/macros/api/builders.dart Outdated Show resolved Hide resolved
working/macros/api/expansion_protocol.dart Show resolved Hide resolved
Copy link
Member

@munificent munificent left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great.

working/macros/api/expansion_protocol.dart Outdated Show resolved Hide resolved
working/macros/api/expansion_protocol.dart Outdated Show resolved Hide resolved
working/macros/api/expansion_protocol.dart Show resolved Hide resolved
working/macros/api/expansion_protocol.dart Outdated Show resolved Hide resolved
working/macros/api/expansion_protocol.dart Show resolved Hide resolved
@jakemac53
Copy link
Contributor Author

Merging this for now to get the ball rolling and we can keep iterating. Once I move it into the SDK repo it should be easier also.

@jakemac53 jakemac53 merged commit d3adb00 into master Dec 15, 2021
@jakemac53 jakemac53 deleted the protocol branch December 15, 2021 17:28
jakemac53 added a commit that referenced this pull request Dec 15, 2021
Followup to #2021. This partially implements one possible version of the MacroExecutor interface, and is a port of my early experiments using `IsolateMirror.loadUri` to load and execute macros.

I could fully flesh this out, if the implementation teams think that would be helpful.
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.

4 participants