Improve how we work with pack-expansion abstraction patterns in SILGen #64420
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.
Before I get too much deeper into variadic reabstraction, I wanted to take the opportunity to rework the APIs I've been using for doing these walks over abstraction patterns with expansions, because I'm about to use them a lot more. This centralizes the basic logic for doing parallel walking over expanded tuples and function parameter lists and makes the resulting code in different subsystems at least a little bit clearer. It's definitely more successful at improving the tuple code than it is for calls, though:
self
really makes things complicated, and the argument code tends to gather argument types from a lot of disparate places rather than passing in substituted types.This also includes fixes to
mapPackTypeIntoElementContext
andmapContextualPackTypeIntoElementContext
.