diff --git a/compiler/testData/diagnostics/tests/cast/IsRecursionSustainable.txt b/compiler/testData/diagnostics/tests/cast/IsRecursionSustainable.txt index 038d424a8f3..6a431f8ef54 100644 --- a/compiler/testData/diagnostics/tests/cast/IsRecursionSustainable.txt +++ b/compiler/testData/diagnostics/tests/cast/IsRecursionSustainable.txt @@ -5,12 +5,21 @@ public fun test(/*0*/ f: SelfR): kotlin.Boolean public open class RecA { public constructor RecA() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public open class RecB { public constructor RecB() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public open class SelfR { public constructor SelfR() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/classIndirectlyInheritsNested.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/classIndirectlyInheritsNested.txt index bf9e0a67360..a6e5377fbb4 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/classIndirectlyInheritsNested.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/classIndirectlyInheritsNested.txt @@ -2,6 +2,9 @@ package public open class C { public constructor C() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class CC { public constructor CC() @@ -13,4 +16,7 @@ public open class C { public open class D { public constructor D() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/classInheritsNested.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/classInheritsNested.txt index b76af9d8602..3b00e01f036 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/classInheritsNested.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/classInheritsNested.txt @@ -2,6 +2,9 @@ package public open class E { public constructor E() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class EE { public constructor EE() diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.kt b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.kt new file mode 100644 index 00000000000..ab2fc7da140 --- /dev/null +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.kt @@ -0,0 +1,8 @@ +open class A : B() +open class B : A() + +fun select(vararg xs: T): T = xs[0] + +fun foo() { + val x = select(A(), B(), "foo") +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.txt new file mode 100644 index 00000000000..e3d961cd7e1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.txt @@ -0,0 +1,18 @@ +package + +public fun foo(): kotlin.Unit +public fun select(/*0*/ vararg xs: T /*kotlin.Array*/): T + +public open class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public open class B { + public constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.kt b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.kt new file mode 100644 index 00000000000..1718b0246e9 --- /dev/null +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.kt @@ -0,0 +1,8 @@ +open class A : B() +open class B : A() + +fun select(vararg xs: T): T = xs[0] + +fun foo() { + select(A(), B()) +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.txt new file mode 100644 index 00000000000..e3d961cd7e1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.txt @@ -0,0 +1,18 @@ +package + +public fun foo(): kotlin.Unit +public fun select(/*0*/ vararg xs: T /*kotlin.Array*/): T + +public open class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} + +public open class B { + public constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/cyclicHierarchy.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/cyclicHierarchy.txt index 2b7764bae58..a5bb15efde0 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/cyclicHierarchy.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/cyclicHierarchy.txt @@ -25,19 +25,37 @@ public interface B : A { } public interface C { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public interface D { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public interface E { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public interface F { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public interface G : F { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public interface H : F { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaCycle.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaCycle.txt index e231978c152..a4bb4cdee45 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaCycle.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaCycle.txt @@ -3,7 +3,10 @@ package public fun foo(): kotlin.Unit public interface A { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public abstract fun getFoo(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public open class B { @@ -13,14 +16,23 @@ public open class B { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public/*package*/ interface B1 : B.B2 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public abstract override /*1*/ fun getFoo(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public/*package*/ interface B2 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public abstract fun getFoo(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public/*package*/ interface B3 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public abstract fun getFoo(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaNested.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaNested.txt index 42b2017f315..a369e5bf20f 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaNested.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/javaJavaNested.txt @@ -1,13 +1,22 @@ package public interface A { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public interface B { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public abstract fun getFoo(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } } public interface A0 { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public interface B { public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean @@ -19,7 +28,10 @@ public interface A0 { public open class B { public constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open fun getFoo(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class C { public constructor C() @@ -32,5 +44,8 @@ public open class B { public open class D { public constructor D() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public open fun getFoo(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/javaKotlinJavaCycle.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/javaKotlinJavaCycle.txt index 3d4d8052a1f..118abb3d68c 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/javaKotlinJavaCycle.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/javaKotlinJavaCycle.txt @@ -1,13 +1,22 @@ package public/*package*/ interface A { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public abstract fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public interface B { public abstract fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public/*package*/ interface C { public abstract fun baz(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.txt index d7daa7c7584..ca16db65088 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaCycle.txt @@ -2,10 +2,16 @@ package public/*package*/ open class J { public/*package*/ constructor J() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public/*package*/ open fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public final class K { public constructor K() public final fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.txt index 3b403038632..c14fd9c898d 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaKotlinCycle.txt @@ -2,15 +2,24 @@ package public open class I { public constructor I() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public final fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public/*package*/ open class J { public/*package*/ constructor J() public/*package*/ open fun bar(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public open class K { public constructor K() public final fun baz(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaNestedCycle.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaNestedCycle.txt index bbc33816e6f..b91459c533a 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaNestedCycle.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/kotlinJavaNestedCycle.txt @@ -1,11 +1,17 @@ package public interface ExceptionTracker { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public/*package*/ open class LockBasedStorageManager { public/*package*/ constructor LockBasedStorageManager() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean @java.lang.Override public/*package*/ open fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public/*package*/ interface ExceptionHandlingStrategy { public abstract fun bar(): kotlin.Unit @@ -16,5 +22,8 @@ public/*package*/ open class LockBasedStorageManager { } public interface StorageManager { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean public abstract fun foo(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/kt303.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/kt303.txt index 513be5c921a..34e77e34326 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/kt303.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/kt303.txt @@ -4,9 +4,15 @@ public val x: kotlin.Int public open class Bar { public constructor Bar() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public open class Foo { public constructor Foo() public final val a: kotlin.Int = 1 + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/objectInheritsNested.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/objectInheritsNested.txt index 2504b42fc83..a2bad7829ba 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/objectInheritsNested.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/objectInheritsNested.txt @@ -2,6 +2,9 @@ package public object A { private constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public interface I { public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean @@ -12,6 +15,9 @@ public object A { public object D { private constructor D() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class NestedD { public constructor NestedD() @@ -23,10 +29,16 @@ public object D { public open class E { public constructor E() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public object G { private constructor G() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class NestedG { public constructor NestedG() @@ -38,6 +50,9 @@ public object G { public object H { private constructor H() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class NestedH { public constructor NestedH() diff --git a/compiler/testData/diagnostics/tests/cyclicHierarchy/twoClassesWithNestedCycle.txt b/compiler/testData/diagnostics/tests/cyclicHierarchy/twoClassesWithNestedCycle.txt index e7862f6e19c..e71adfc90e1 100644 --- a/compiler/testData/diagnostics/tests/cyclicHierarchy/twoClassesWithNestedCycle.txt +++ b/compiler/testData/diagnostics/tests/cyclicHierarchy/twoClassesWithNestedCycle.txt @@ -2,6 +2,9 @@ package public open class A { public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class AA { public constructor AA() @@ -13,6 +16,9 @@ public open class A { public open class B { public constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class BB { public constructor BB() diff --git a/compiler/testData/diagnostics/tests/regressions/TypeParameterAsASupertype.txt b/compiler/testData/diagnostics/tests/regressions/TypeParameterAsASupertype.txt index 0d6d91fffd2..eb8391f9426 100644 --- a/compiler/testData/diagnostics/tests/regressions/TypeParameterAsASupertype.txt +++ b/compiler/testData/diagnostics/tests/regressions/TypeParameterAsASupertype.txt @@ -2,4 +2,7 @@ package public final class A { public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } diff --git a/compiler/testData/diagnostics/tests/typealias/cyclicInheritanceViaTypeAlias.txt b/compiler/testData/diagnostics/tests/typealias/cyclicInheritanceViaTypeAlias.txt index a2d7b2001f3..4c40750cb3c 100644 --- a/compiler/testData/diagnostics/tests/typealias/cyclicInheritanceViaTypeAlias.txt +++ b/compiler/testData/diagnostics/tests/typealias/cyclicInheritanceViaTypeAlias.txt @@ -2,6 +2,9 @@ package public final class A { public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String public open class Nested { public constructor Nested() @@ -13,5 +16,8 @@ public final class A { public open class B { public constructor B() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } public typealias ANested = A.Nested diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index b54816bc196..5b43c80348a 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -4796,6 +4796,18 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { doTest(fileName); } + @TestMetadata("commonSupertypeForCyclicAndUsualTypes.kt") + public void testCommonSupertypeForCyclicAndUsualTypes() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.kt"); + doTest(fileName); + } + + @TestMetadata("commonSupertypeForCyclicTypes.kt") + public void testCommonSupertypeForCyclicTypes() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.kt"); + doTest(fileName); + } + @TestMetadata("cyclicHierarchy.kt") public void testCyclicHierarchy() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/cyclicHierarchy/cyclicHierarchy.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java index 4b65701ce59..0dbe7d89307 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsUsingJavacTestGenerated.java @@ -4796,6 +4796,18 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing doTest(fileName); } + @TestMetadata("commonSupertypeForCyclicAndUsualTypes.kt") + public void testCommonSupertypeForCyclicAndUsualTypes() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicAndUsualTypes.kt"); + doTest(fileName); + } + + @TestMetadata("commonSupertypeForCyclicTypes.kt") + public void testCommonSupertypeForCyclicTypes() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/cyclicHierarchy/commonSupertypeForCyclicTypes.kt"); + doTest(fileName); + } + @TestMetadata("cyclicHierarchy.kt") public void testCyclicHierarchy() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/cyclicHierarchy/cyclicHierarchy.kt"); diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/AbstractClassTypeConstructor.java b/core/descriptors/src/org/jetbrains/kotlin/types/AbstractClassTypeConstructor.java index 4d675d805e3..429b439881d 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/AbstractClassTypeConstructor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/AbstractClassTypeConstructor.java @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.types; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.resolve.DescriptorUtils; @@ -160,4 +161,14 @@ public abstract class AbstractClassTypeConstructor extends AbstractTypeConstruct return additionalNeighbours; } + + @Nullable + @Override + protected KotlinType defaultSupertypeIfEmpty() { + if (KotlinBuiltIns.isSpecialClassWithNoSupertypes(this.getDeclarationDescriptor())) { + return null; + } else { + return getBuiltIns().getAnyType(); + } + } }