diff --git a/compiler/testData/codegen/regressions/kt1076.kt b/compiler/testData/codegen/regressions/kt1076.kt index 918713f681f..181ab012e4f 100644 --- a/compiler/testData/codegen/regressions/kt1076.kt +++ b/compiler/testData/codegen/regressions/kt1076.kt @@ -4,7 +4,7 @@ fun box() : String { cnt++ } - for (n in (1..5).reversed) + for (n in (1..5).reversed()) cnt++ return if(cnt == 9) "OK" else cnt.toString() diff --git a/libraries/stdlib/src/kotlin/Ranges.kt b/libraries/stdlib/src/kotlin/Ranges.kt index 953c29873b1..80dda038677 100644 --- a/libraries/stdlib/src/kotlin/Ranges.kt +++ b/libraries/stdlib/src/kotlin/Ranges.kt @@ -1,23 +1,59 @@ package kotlin -public val CharRange.reversed: CharRange - get() = CharRange(end, if (start < end) -size else size) +public fun CharacterSequence.reversed(): CharacterSequence { + return CharacterSequence(end, start, -increment) +} -public val ByteRange.reversed: ByteRange - get() = ByteRange(end, if (start < end) -size else size) +public fun ByteSequence.reversed(): ByteSequence { + return ByteSequence(end, start, -increment) +} -public val ShortRange.reversed: ShortRange - get() = ShortRange(end, if (start < end) -size else size) +public fun ShortSequence.reversed(): ShortSequence { + return ShortSequence(end, start, -increment) +} -public val IntRange.reversed: IntRange - get() = IntRange(end, if (start < end) -size else size) +public fun IntSequence.reversed(): IntSequence { + return IntSequence(end, start, -increment) +} -public val FloatRange.reversed: FloatRange - get() = FloatRange(end, if (start < end) -size else size) +public fun FloatSequence.reversed(): FloatSequence { + return FloatSequence(end, start, -increment) +} -public val LongRange.reversed: LongRange - get() = LongRange(end, if (start < end) -size else size) +public fun LongSequence.reversed(): LongSequence { + return LongSequence(end, start, -increment) +} + +public fun DoubleSequence.reversed(): DoubleSequence { + return DoubleSequence(end, start, -increment) +} -public val DoubleRange.reversed: DoubleRange - get() = DoubleRange(end, if (start < end) -size else size) + +public fun CharRange.reversed(): CharacterSequence { + return CharacterSequence(end, start, -1) +} + +public fun ByteRange.reversed(): ByteSequence { + return ByteSequence(end, start, -1) +} + +public fun ShortRange.reversed(): ShortSequence { + return ShortSequence(end, start, -1) +} + +public fun IntRange.reversed(): IntSequence { + return IntSequence(end, start, -1) +} + +public fun FloatRange.reversed(): FloatSequence { + return FloatSequence(end, start, -1.0.toFloat()) +} + +public fun LongRange.reversed(): LongSequence { + return LongSequence(end, start, -1.toLong()) +} + +public fun DoubleRange.reversed(): DoubleSequence { + return DoubleSequence(end, start, -1.0) +} diff --git a/libraries/stdlib/test/language/RangeTest.kt b/libraries/stdlib/test/language/RangeTest.kt index 239a402f5dc..11694b60d05 100644 --- a/libraries/stdlib/test/language/RangeTest.kt +++ b/libraries/stdlib/test/language/RangeTest.kt @@ -26,20 +26,20 @@ class RangeTest { test fun reversedRanges() { val intRange = 0..9 - val reversedIntRange = intRange.reversed + val reversedIntRange = intRange.reversed() assertEquals(10, reversedIntRange.size) assertEquals(9, reversedIntRange.start) assertEquals(0, reversedIntRange.end) - assertEquals(intRange, reversedIntRange.reversed) + assertEquals(intRange, reversedIntRange.reversed()) val doubleRange = 0.0..9.0 - val reversedDoubleRange = doubleRange.reversed + val reversedDoubleRange = doubleRange.reversed() assertEquals(9.0, reversedDoubleRange.size) assertEquals(9.0, reversedDoubleRange.start) assertEquals(0.0, reversedDoubleRange.end) - assertEquals(doubleRange, reversedDoubleRange.reversed) + assertEquals(doubleRange, reversedDoubleRange.reversed()) - assertEquals(IntRange.EMPTY, IntRange.EMPTY.reversed) - assertEquals(FloatRange.EMPTY, FloatRange.EMPTY.reversed) + assertEquals(IntRange.EMPTY, IntRange.EMPTY.reversed()) + assertEquals(FloatRange.EMPTY, FloatRange.EMPTY.reversed()) } } \ No newline at end of file