add @PlaydateMain macro to remove eventHandler boilerplate #153
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
the macro generates the
gamevariable andeventHandlerfunction, using the declaration it's attached to as thePlaydateGame. the name@PlaydateMaincalls back to@mainas it fills the same role.providing a macro does add a dependency on Swift Syntax, but as of Swift 6.2, SwiftPM distributes Swift Syntax pre-built, so it shouldn't impact compile times too much.
finally, i have a question about
PlaydateGame. in the examples, theGametype is always defined as a class, but i'm not sure i see any reason it needs to be? given that the protocol doesn't inherit fromAnyObject, the macro supports being used on structs, classes, and even enums. since Swift generally recommends using structs over classes unless necessary, can we switch the examples to use a struct instead?P.S. see also finnvoor/PlaydateKitTemplate#5