[4.1] Validate class constraints for generic arguments of types #14178
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.
• Explanation:
AnyObject
constraints on type parameters of generic types weren't getting checked, allowing invalid types to be formed.• Scope of Issue: Allows ill-formed code to propagate beyond the type checker, causing crashes down the line. Such code was rejected prior to Swift 4.0.
• Origination: The removal of
AnyObject
as a magical protocol left this hole.• Risk: Low risk; we're checking a constraint consistently now. Any source code that breaks due to this was ill-formed and would likely have crashed later on anyway.
• Reviewed By: @rudkx
• Testing: Compiler regression tests, including new tests.
• Radar / SR: SR-6841 / rdar://problem/36884025