Java 8 override restrictions: interface can't implement a method of 'Any'

- update Range and related classes
This commit is contained in:
Dmitry Petrov
2015-10-09 11:59:34 +03:00
parent 7e9e427d4c
commit ff1bf673ba
4 changed files with 20 additions and 2 deletions
-2
View File
@@ -40,6 +40,4 @@ public interface Range<T : Comparable<T>> {
* Checks if the range is empty.
*/
public fun isEmpty(): Boolean = start > end
override fun toString(): String = "$start..$end"
}
+14
View File
@@ -38,6 +38,8 @@ public class ByteRange(override val start: Byte, override val end: Byte) : Range
override fun hashCode(): Int =
if (isEmpty()) -1 else (31 * start.toInt() + end.toInt())
override fun toString(): String = "$start..$end"
companion object {
/** An empty range of values of type Byte. */
public val EMPTY: ByteRange = ByteRange(1, 0)
@@ -64,6 +66,8 @@ public class CharRange(override val start: Char, override val end: Char) : Range
override fun hashCode(): Int =
if (isEmpty()) -1 else (31 * start.toInt() + end.toInt())
override fun toString(): String = "$start..$end"
companion object {
/** An empty range of values of type Char. */
public val EMPTY: CharRange = CharRange(1.toChar(), 0.toChar())
@@ -90,6 +94,8 @@ public class ShortRange(override val start: Short, override val end: Short) : Ra
override fun hashCode(): Int =
if (isEmpty()) -1 else (31 * start.toInt() + end.toInt())
override fun toString(): String = "$start..$end"
companion object {
/** An empty range of values of type Short. */
public val EMPTY: ShortRange = ShortRange(1, 0)
@@ -116,6 +122,8 @@ public class IntRange(override val start: Int, override val end: Int) : Range<In
override fun hashCode(): Int =
if (isEmpty()) -1 else (31 * start + end)
override fun toString(): String = "$start..$end"
companion object {
/** An empty range of values of type Int. */
public val EMPTY: IntRange = IntRange(1, 0)
@@ -142,6 +150,8 @@ public class LongRange(override val start: Long, override val end: Long) : Range
override fun hashCode(): Int =
if (isEmpty()) -1 else (31 * (start xor (start ushr 32)) + (end xor (end ushr 32))).toInt()
override fun toString(): String = "$start..$end"
companion object {
/** An empty range of values of type Long. */
public val EMPTY: LongRange = LongRange(1, 0)
@@ -168,6 +178,8 @@ public class FloatRange(override val start: Float, override val end: Float) : Ra
override fun hashCode(): Int =
if (isEmpty()) -1 else (31 * java.lang.Float.floatToIntBits(start) + java.lang.Float.floatToIntBits(end))
override fun toString(): String = "$start..$end"
companion object {
/** An empty range of values of type Float. */
public val EMPTY: FloatRange = FloatRange(1.0f, 0.0f)
@@ -199,6 +211,8 @@ public class DoubleRange(override val start: Double, override val end: Double) :
return (31 * result + (temp xor (temp ushr 32))).toInt()
}
override fun toString(): String = "$start..$end"
companion object {
/** An empty range of values of type Double. */
public val EMPTY: DoubleRange = DoubleRange(1.0, 0.0)
@@ -62,6 +62,8 @@ class GenerateRanges(out: PrintWriter) : BuiltInsSourceGenerator(out) {
" }"
}
val toString = "\"\$start..\$end\""
out.println(
"""/**
* A range of values of type `$t`.
@@ -82,6 +84,8 @@ public class $range(override val start: $t, override val end: $t) : Range<$t>, P
override fun hashCode(): Int $hashCode
override fun toString(): String = $toString
companion object {
/** An empty range of values of type $t. */
public val EMPTY: $range = $range($emptyBounds)
@@ -21,6 +21,8 @@ public class ComparableRange<T: Comparable<T>> (
override fun hashCode(): Int {
return if (isEmpty()) -1 else 31 * start.hashCode() + end.hashCode()
}
override fun toString(): String = "$start..$end"
}
/**