This repository was archived by the owner on Jul 1, 2023. It is now read-only.
Fix test failures caused by Optional: KeyPathIterable
conformance
#1090
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.
swiftlang/swift#33992 added
Optional: KeyPathIterable
conformance.The added conformance caused code parts like
self[keyPath: kp] as? _KeyPathIterableBase
to be interpreted as castingOptional
(return type ofself[keyPath: kp]
) to_KeyPathIterableBase
(which always succeeds because of the added conformance).The original intention was to cast the wrapped value of
Optional
to_KeyPathIterableBase
. This original behavior is restored by changingif let nested = self[keyPath: kp] as? _KeyPathIterableBase
toif let value = self[keyPath: kp], let nested = value as? _KeyPathIterableBase
,where
value
first "unwraps"Optional
andnested
is the result of casting wrapped value to_KeyPathIterableBase
.