| // TARGET_BACKEND: JVM | |
| // FILE: JI.java | |
| public interface JI { | |
| @Override | |
| public abstract boolean equals(Object o); | |
| @Override | |
| public abstract int hashCode(); | |
| @Override | |
| public abstract String toString(); | |
| } | |
| // FILE: JC.java | |
| public abstract class JC { | |
| @Override | |
| public abstract boolean equals(Object o); | |
| @Override | |
| public abstract int hashCode(); | |
| @Override | |
| public abstract String toString(); | |
| } | |
| // FILE: JC2.java | |
| public abstract class JC2 extends JC { | |
| } | |
| // FILE: box.kt | |
| interface KI : JI | |
| class X : KI { | |
| override fun equals(other: Any?): Boolean = true | |
| override fun hashCode(): Int = 0 | |
| override fun toString(): String = "" | |
| } | |
| abstract class KC : JC() | |
| class Y : KC() { | |
| override fun equals(other: Any?): Boolean = true | |
| override fun hashCode(): Int = 0 | |
| override fun toString(): String = "" | |
| } | |
| abstract class KC2 : JC2() | |
| class Z : KC2() { | |
| override fun equals(other: Any?): Boolean = true | |
| override fun hashCode(): Int = 0 | |
| override fun toString(): String = "" | |
| } | |
| fun box(): String { | |
| X().equals(X()) | |
| X().hashCode() | |
| X().toString() | |
| Y().equals(Y()) | |
| Y().hashCode() | |
| Y().toString() | |
| Z().equals(Z()) | |
| Z().hashCode() | |
| Z().toString() | |
| return "OK" | |
| } |