[5.9] Fix the type-lowering verifier to handle pack expansions #64965
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.
5.9 version of #64951.
Explanation: There's a check we do when producing a TypeLowering object that checks that certain type properties are consistent with the directly-stored values in the type. I'm not sure it's a very useful piece of code, but unless we remove it, it needs to do the right thing with pack expansions, which it currently isn't.
Scope: Crashes in SILGen when assertions are enabled and when a tuple contains a pack expansion element where the a pattern type that has interesting type properties that the verifier checks; generally this means something like
repeat Array<each T>
Issue: rdar://107664237
Risk: Low; straightforward change to handle a type that's specific to variadic generics
Testing: Regression tests added
Reviewer: Slava Pestov