[ClangImporter] Account for synthesized types when filtering by module #19991
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.
We treat redeclarable Clang declarations as present in every module where they're declared, except for struct/enum/union declarations where we only count full definitions. This logic requires going from the imported Swift declaration back to the Clang declaration, something that's not really possible for "synthesized declarations" today. The only top-level synthesized declarations we have right now are the structs we make to wrap error code enums.
The 100% correct thing to do would be to account for people defining error code enums consistently across multiple modules. In practice, though, error code enums are used with Objective-C (the importer's treatment of them is tied to NSError), where redefining existing types is very unusual. Therefore, this fix just ignores redeclarations of error code enums, whether they're definitions or not.
rdar://problem/45414271