[4.2] Make upperBound != 0 a precondition for RNG.next(upperBound:) (#17627) #17631
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.
The function's definition is "Returns a random value that is less than the given upper bound," which cannot possibly be satisfied with upperBound == 0; previously the function returned zero, which was a bug.
Resolves SR-8143 and rdar://problem/41735302.
Explanation: Without this change,
RNG.next(upperBound: bound)
can return a value that does not satisfy the invariantbound < upperBound
.Scope: Minor, but we want to be able to guarantee this invariant holds.
Issue #: https://bugs.swift.org/browse/SR-8143
Risk: Very low.
Testing: Standard regression tests. Random is a new feature, and this only fixes an error case.
Reviewer: @lorentey