2.x: Fix Flowable.singleOrError().toFlowable() not signalling NoSuchElementException #5904
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.
When a
singleOrError
is followed bytoFlowable()
, the assembly process switches theFlowable->Single
operator into aFlowable->Flowable
operator implementing thesingleOrError
behavior (saving the back-and-forth type conversion). The backing implementation was shared withsingleElement
and as such, did not properly handle theorError
case for an empty source. The PR fixes the lack ofNoSuchElementException
in this case.Fixes #5903.
The
Observable
variant doesn't have such optimization but the test has been converted to make sureObservable
is verified for this aspect in case the optimization is implemented with it in the future.