[ffigen] Support transitive categories of built-in types #1930
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.
The core of the fix was simple: in
FindDirectTransitiveDepsVisitation
, I had to add a special case for the categories of interfaces defined in package:objective_c. But this caused a bunch of problems, so most of the PR is fixing the downstream effects of this change.ListBindingsVisitation
, I had to union all thedirectTransitives
into thetransitives
to fix a bug where these new categories were missing all their SELs, msgSends, and class objects.directlyIncluded
(stuff that's explicitly mentioned in the config), andindirectlyIncluded
(like super types, which we want to fully codegen even when they're not explicitly mentioned in the config). This fixes a bug where all of NSObject's categories were being generated even though the user didn't ask for them.ObjCBuiltInFunctions.builtInCategories
), so we don't codegen them in user bindingsFixes #1820