Booleans are no longer Comparable

This commit is contained in:
Alexander Udalov
2012-11-28 17:03:56 +04:00
parent b23601eefe
commit 9eecf22e15
7 changed files with 16 additions and 13 deletions
@@ -51,9 +51,6 @@ public class CompareTo implements IntrinsicMethod {
else if (receiver.type == Type.INT_TYPE) {
v.invokestatic("jet/runtime/Intrinsics", "compare", "(II)I");
}
else if (receiver.type == Type.BOOLEAN_TYPE) {
v.invokestatic("jet/runtime/Intrinsics", "compare", "(ZZ)I");
}
else if (receiver.type == Type.LONG_TYPE) {
v.invokestatic("jet/runtime/Intrinsics", "compare", "(JJ)I");
}
+1 -3
View File
@@ -28,7 +28,7 @@ public trait Hashable {
public fun equals(other : Any?) : Boolean
}
public class Boolean : Comparable<Boolean> {
public class Boolean {
public fun not() : Boolean
public fun and(other : Boolean) : Boolean
@@ -38,8 +38,6 @@ public class Boolean : Comparable<Boolean> {
public fun xor(other : Boolean) : Boolean
public fun equals(other : Any?) : Boolean
public override fun compareTo(that : Boolean) : Int
}
public trait CharSequence {
+1 -2
View File
@@ -13,10 +13,9 @@ public final class jet.Array</*0,r*/ T : jet.Any?> : jet.Any {
public final fun set(/*0*/ index: jet.Int, /*1*/ value: T): jet.Tuple0
public final val size: jet.Int
}
public final class jet.Boolean : jet.Comparable<jet.Boolean> {
public final class jet.Boolean : jet.Any {
public final /*constructor*/ fun <init>(): jet.Boolean
public final fun and(/*0*/ other: jet.Boolean): jet.Boolean
public open override /*1*/ fun compareTo(/*0*/ that: jet.Boolean): jet.Int
public final fun equals(/*0*/ other: jet.Any?): jet.Boolean
public final fun not(): jet.Boolean
public final fun or(/*0*/ other: jet.Boolean): jet.Boolean
@@ -0,0 +1,8 @@
fun foo(x: Boolean) {
x <!UNRESOLVED_REFERENCE!><<!> x
x <!UNRESOLVED_REFERENCE!><=<!> x
x <!UNRESOLVED_REFERENCE!>><!> x
x <!UNRESOLVED_REFERENCE!>>=<!> x
x == x
x.<!UNRESOLVED_REFERENCE!>compareTo<!>(x)
}
@@ -2386,6 +2386,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/library"), "kt", true);
}
@TestMetadata("BooleanIsNotComparable.kt")
public void testBooleanIsNotComparable() throws Exception {
doTest("compiler/testData/diagnostics/tests/library/BooleanIsNotComparable.kt");
}
@TestMetadata("Collections.kt")
public void testCollections() throws Exception {
doTest("compiler/testData/diagnostics/tests/library/Collections.kt");
@@ -207,7 +207,7 @@ public class JetTypeCheckerTest extends JetLiteFixture {
assertCommonSupertype("Derived_T<Int>", "DDerived_T<Int>", "DDerived1_T<Int>");
assertCommonSupertype("Comparable<*>", "Comparable<Int>", "Comparable<Boolean>");
assertCommonSupertype("Base_T<out Comparable<*>>", "Base_T<Int>", "Base_T<Boolean>");
assertCommonSupertype("Base_T<out Comparable<*>>", "Base_T<Int>", "Base_T<String>");
assertCommonSupertype("Base_T<in Int>", "Base_T<Int>", "Base_T<in Int>");
assertCommonSupertype("Base_T<in Int>", "Derived_T<Int>", "Base_T<in Int>");
assertCommonSupertype("Base_T<in Int>", "Derived_T<in Int>", "Base_T<Int>");
-4
View File
@@ -80,10 +80,6 @@ public class Intrinsics {
return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}
public static int compare(boolean thisVal, boolean anotherVal) {
return (thisVal == anotherVal ? 0 : (anotherVal ? 1 : -1));
}
public static <R> R stupidSync(Object lock, Function0<R> block) {
synchronized (lock) {
return block.invoke();