feat(advanced): expose the operator signals as public API - #182
Merged
Conversation
- Make EmptySignal, FinallySignal, LoopSignal, OnErrorResumeNextSignal, RecoverSignal, ResumeSignal, ThrowSignal and EverySignal public. They sit beside LeadSignal, MergeSignal and TapSignal, which were already public, so a caller could reach half the operator surface as concrete types and not the rest. They have never shipped public and stay in ReactiveUI.Primitives.Advanced, so nothing moves and nothing breaks. - Prefix every DebuggerDisplay with the name of its class, so a debugger row says what it is rather than only what it holds. Follows the four that already did this; the 49 that delegate to a DebuggerDisplay member are untouched, since those build their own string. - Regenerate all 136 PublicAPI baselines. The baseline records attributes, so the two changes above cannot land separately without an intermediate state that does not build.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #182 +/- ##
=======================================
Coverage 98.18% 98.19%
=======================================
Files 711 711
Lines 22078 22078
Branches 2703 2703
=======================================
+ Hits 21678 21680 +2
Misses 196 196
+ Partials 204 202 -2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.



What kind of change does this PR introduce?
Feature (public API surface).
What is the new behavior?
Every concrete operator signal under
ReactiveUI.Primitives.Advancedis public, so callers can name the type they build instead of only the factory that returns it.EmptySignal<T>,FinallySignal<T>,LoopSignal<T>,OnErrorResumeNextSignal<T>,RecoverSignal<T, TException>,ResumeSignal<T>,ThrowSignal<T>andEverySignal.ReactiveUI.Primitives.Advanced, alongsideLeadSignal,MergeSignal,ReturnSignalandTapSignal, which were already public.RaceArms<T>and the helper statics.DebuggerDisplaynow names its own class, so a debugger row says what the object is and not only what it holds."LeadSignal: Value = {Value}, Source = {Source}"rather than"Value = {Value}, Source = {Source}".DebuggerDisplaymember are untouched, because that member builds the whole string itself.What is the current behavior?
internal, so half the operator surface is reachable as a concrete type and half is not. A caller wantingEmptyon a scheduler has a factory and no type.DebuggerDisplaystrings name their fields but not their class, so two different signals holding a source render identically.What might this PR break?
None. The eight types have never shipped public, so no consumer can be depending on them, and they gain visibility in the namespace they already occupied rather than moving.
Checklist
mainbranchAdditional information
Most of the diff is mechanical and generated. The hand-written parts are the eight signal files under
src/Primitives.Shared/Advanced/, which carry the visibility change and their newDebuggerDisplay. Everything else is the class-name prefix applied across the existing attributes, plus the regeneratedPublicAPIbaselines.The baseline records attributes, so the visibility change and the prefix cannot land as separate commits without an intermediate state that does not build. The Apple target-framework baselines were regenerated on a Windows host, which is the only one carrying those workloads.