SE-0389: Attached Macros

My overall opinion is very positive and hasn't changed much since the pitch:

Here are two things I want to specifically point out:

  • The problem of shadowing the default memberwise initializer:

  • A peer macro currently can either specify that it generates a prefixed name or a suffixed name. I can see situations where a macro would want to add both a prefix and a suffix. For example, a macro attached to the type APIClient could generate a type called _APIClientMock. It would have to use arbitrary, which would lead to longer compilation times.

    Maybe, instead of having prefixed() and suffixed(), we could have something like modified(prefix:suffix:) where either argument could be omitted (i.e. modified(prefix:) or modified(suffix:)).