Skip to content

Allow a class/mixin to implicitly apply a macro wherever it is mixed in or extended? #31

Description

@jakemac53

I am not sure this is a good idea, but filing it to have a central area for discussion.

The general idea is to have a mechanism available whereby mixing in or extending a particular class would auto apply some macros to the class that mixed it in or extended it.

This would eliminate the need for annotations in some cases, and enable frameworks to "hide" the macro applications from their users. Consider for instance:

class MyWidgetState extends State<MyWidget> with AutoListener {}

Instead of:

@autoListen
class MyWidgetState extends State<MyWidget> {}

Potentially frameworks could even add macro applications to their base classes (ie: State or Widget) in this example.

Pros

  • Hides the magic in some cases
  • Potentially less boilerplate

Cons

  • Hides the magic, making it more magical, and less expected
  • Two ways to do the same thing. Some macro authors may choose to use this just to avoid the annotation, making there two ways to do exactly the same thing.
  • Potential overhead in more complicated class hierarchies that otherwise aren't necessary (if the mixin is only used to apply the macro for instance)

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions