Add failing test using store.publisher in makeUIView #3745
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.
Here's another case of failing perception checks for where TCA, SwiftUI, UIKit, and Combine meet.
Because the store is first accessed inside
makeUIView(_:context:)
, theisSwiftUI()
check inside Perception considers it as valid.But publishers seem to mix very unwell with
ObservableState
here… Not only should accessingstate.count
inside thesink { ... }
call be free of perception checks: becausestate
is just astruct
(mostly!) and as such a snapshot of whatever state the store was in at the time of the publisher emitting a value, accessing its value members shouldn't even touch the observation/perception machinery, I think. Or why should it?In any case, this is an example of the runtime warnings we started getting when attempting to upgrade to the latest Point-Free library versions.