Fix incorrect range transform in nextUInt/nextULong with range parameter
#KT-25570
This commit is contained in:
@@ -374,7 +374,7 @@ public fun Random.nextUInt(origin: UInt, bound: UInt): UInt {
|
||||
public fun Random.nextUInt(range: UIntRange): UInt = when {
|
||||
range.isEmpty() -> throw IllegalArgumentException("Cannot get random in empty range: $range")
|
||||
range.last < UInt.MAX_VALUE -> nextUInt(range.first, range.last + 1u)
|
||||
range.first > UInt.MIN_VALUE -> nextUInt(range.first, range.last + 1u)
|
||||
range.first > UInt.MIN_VALUE -> nextUInt(range.first - 1u, range.last) + 1u
|
||||
else -> nextUInt()
|
||||
}
|
||||
|
||||
@@ -430,7 +430,7 @@ public fun Random.nextULong(origin: ULong, bound: ULong): ULong {
|
||||
public fun Random.nextULong(range: ULongRange): ULong = when {
|
||||
range.isEmpty() -> throw IllegalArgumentException("Cannot get random in empty range: $range")
|
||||
range.last < ULong.MAX_VALUE -> nextULong(range.first, range.last + 1u)
|
||||
range.first > ULong.MIN_VALUE -> nextULong(range.first, range.last + 1u)
|
||||
range.first > ULong.MIN_VALUE -> nextULong(range.first - 1u, range.last) + 1u
|
||||
else -> nextULong()
|
||||
}
|
||||
|
||||
|
||||
@@ -180,6 +180,7 @@ abstract class RandomSmokeTest {
|
||||
(1u..5u),
|
||||
(0u..31u),
|
||||
(0u..UInt.MAX_VALUE - 1u),
|
||||
(1u..UInt.MAX_VALUE),
|
||||
(0u..UInt.MAX_VALUE)
|
||||
)) {
|
||||
repeat(1000) {
|
||||
@@ -338,6 +339,7 @@ abstract class RandomSmokeTest {
|
||||
(1uL..5uL),
|
||||
(0uL..31uL),
|
||||
(0uL..(ULong.MAX_VALUE - 1uL)),
|
||||
(1uL..ULong.MAX_VALUE),
|
||||
(0uL..ULong.MAX_VALUE)
|
||||
)) {
|
||||
repeat(1000) {
|
||||
|
||||
Reference in New Issue
Block a user