-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Fix ExistentialSpecializer: inherited conformance #28430
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@swift-ci test |
@swift-ci test source compatibility |
@swift-ci benchmark |
Performance: -O
Code size: -OPerformance: -Osize
Code size: -OsizePerformance: -OnoneCode size: -swiftlibsHow to read the dataThe tables contain differences in performance which are larger than 8% and differences in code size which are larger than 1%.If you see any unexpected regressions, you should consider fixing the Noise: Sometimes the performance results (not code size!) contain false Hardware Overview
|
Build failed |
Build failed |
@swift-ci test |
Build failed |
Build failed |
@swift-ci smoke test |
The ExistentialSpecializer incorrectly assumed that an existential's conformances match an opened archetype. They don't. Opened archetypes strip inherited conformances per the ABI for generic argument passing. Existential values retain those inherited conformances (for some inexplicable reason). - Rename ASTContext::getExistentialSignature() to getOpenedArchetypeSiganture() because it was doing exactly the wrong thing for existentials. - Fix ConcreteExistentialInfo to produce the correct SubstitutionMap. - Fix ExistentialSpecializer to generate the correct conformances for init_existential by adding a collectExistentialConformances() helper. Fixes <rdar://problem/57025861> "Assertion failed: (conformances.size() == numConformanceRequirements)" in ExistentialSpecializer on inlined code
@swift-ci smoke test |
The ExistentialSpecializer incorrectly assumed that an existential's conformances match an opened archetype. They don't. Opened archetypes strip inherited conformances per the ABI for generic argument passing. Existential values retain those inherited conformances (for some inexplicable reason).
Rename ASTContext::getExistentialSignature() to
getOpenedArchetypeSiganture() because it was doing exactly the wrong
thing for existentials.
Fix ConcreteExistentialInfo to produce the correct SubstitutionMap.
Fix ExistentialSpecializer to generate the correct conformances for
init_existential by adding a collectExistentialConformances() helper.
Fixes rdar://problem/57025861 "Assertion failed: (conformances.size() == numConformanceRequirements)" in ExistentialSpecializer on inlined code