[Macros] Add notion of owning module and supplemental modules for macros #1071
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.
Macros are associated with a module, which is the module in which they would be defined if the macro could be defined within the language itself. We call this the owning module. It will need to be imported in any Swift source file that wants to use the macro. Introduce an "owningModule" requirement to the Macro protocol to describe this.
The signatures of macros can make use of types in the owning module, but might also require other modules (e.g., that the owning module depends on). Introduce a "supplementalSignatureModules" requirement to the Macro protocol, with a default implementation of
[]
since this is unlikely to be used often.Both the owning and supplemental modules will be imported when processing the macro signature.