An important consideration for macros is that their effect on name lookup is constrained, so we don't need to run all of the macros in the program in order to serve code completion requests, track incremental compilation updates, resolve member references, and so on. When a macro can only attach members to the type it's applied to, then we only have to run the macro if we're looking for members of the annotated type. If we were going to lift that restriction, I think there'd still have to be a way for the macro declaration to specify what other types it adds members to.