[4.2] [Type checker] Warn about overrides of NSObject.hashValue. #18411
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:
NSObject.hashValue
is provided to satisfy thehashValue
constraint ofthe
Hashable
protocol. However, it is not the correct customizationpoint for interoperating with Objective-C, because Objective-C code
will call through the
-hash
method. Warn about overrides ofNSObject.hashValue
; users should overrideNSObject.hash
instead. This is meant asstaging in Swift 4.2, so that a future Swift release can make
NSObject.hashValue
public
rather thanopen
.Scope: Warns about code that is overriding an API that is not meant to be overridden. Overriding
this method can cause strange runtime behavior when bridging, so we don't expect that it's too common.
Risk: Very low; it's an isolated new warning.
Testing: Compiler regression tests, including new tests.
Reviewer: @rudkx
SR / Radar: rdar://problem/42780635