[FIR] Supertype and inheritance checkers group
This commit is contained in:
@@ -24,17 +24,17 @@ interface T2<T> {}
|
||||
interface Test() {
|
||||
}
|
||||
|
||||
interface Test1 : C2() {}
|
||||
interface Test1 : <!INTERFACE_WITH_SUPERCLASS, SUPERTYPE_INITIALIZED_IN_INTERFACE!>C2<!>() {}
|
||||
|
||||
interface Test2 : C2 {}
|
||||
interface Test2 : <!INTERFACE_WITH_SUPERCLASS!>C2<!> {}
|
||||
|
||||
interface Test3 : C2, C3 {}
|
||||
interface Test3 : <!INTERFACE_WITH_SUPERCLASS!>C2<!>, C3 {}
|
||||
|
||||
interface Test4 : T1 {}
|
||||
|
||||
interface Test5 : T1, T1 {}
|
||||
|
||||
interface Test6 : C1 {}
|
||||
interface Test6 : <!INTERFACE_WITH_SUPERCLASS!>C1<!> {}
|
||||
|
||||
class CTest1() : OC1() {}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// JAVAC_EXPECTED_FILE
|
||||
interface MyTrait: Object {
|
||||
interface MyTrait: <!INTERFACE_WITH_SUPERCLASS!>Object<!> {
|
||||
override fun toString(): String
|
||||
public override fun finalize()
|
||||
public override fun wait()
|
||||
|
||||
-46
@@ -1,46 +0,0 @@
|
||||
// !DIAGNOSTICS: -WARNING +CAST_NEVER_SUCCEEDS
|
||||
interface T1
|
||||
interface T2
|
||||
interface T3
|
||||
open class OC1: T1
|
||||
open class OC2: OC1(), T2
|
||||
class FC1: OC2(), T3
|
||||
interface T4: OC1
|
||||
interface T5: T2
|
||||
|
||||
fun <TP1: OC1, TP2: T2, TP3: OC2> test(
|
||||
t2: T2,
|
||||
t4: T4,
|
||||
fc1: FC1,
|
||||
oc1: OC1,
|
||||
oc2: OC2,
|
||||
tp1: TP1,
|
||||
tp2: TP2
|
||||
) {
|
||||
fc1 as FC1
|
||||
fc1 as OC1
|
||||
fc1 as T1
|
||||
fc1 as TP1
|
||||
|
||||
oc1 as FC1
|
||||
oc1 as OC2
|
||||
oc2 as OC1
|
||||
oc1 as T2
|
||||
oc1 as T1
|
||||
oc1 as TP1
|
||||
oc1 as TP2
|
||||
|
||||
t2 as FC1
|
||||
t2 as OC2
|
||||
t4 as OC1
|
||||
t2 as T2
|
||||
t2 as T5
|
||||
t2 as TP2
|
||||
|
||||
tp1 as FC1
|
||||
tp1 as OC1
|
||||
tp1 as OC2
|
||||
tp2 as T2
|
||||
tp2 as T5
|
||||
tp1 as TP3
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -WARNING +CAST_NEVER_SUCCEEDS
|
||||
interface T1
|
||||
interface T2
|
||||
|
||||
Vendored
+1
-1
@@ -2,6 +2,6 @@ open class C {
|
||||
val x = 1
|
||||
}
|
||||
|
||||
interface Tr : C {
|
||||
interface Tr : <!INTERFACE_WITH_SUPERCLASS!>C<!> {
|
||||
fun getX() = 1
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
// FILE: test.kt
|
||||
enum class MyEnum(): MyClass() {}
|
||||
enum class MyEnum(): <!CLASS_IN_SUPERTYPE_FOR_ENUM!>MyClass<!>() {}
|
||||
enum class MyEnum2(): MyTrait {}
|
||||
enum class MyEnum3(): MyEnumBase() {}
|
||||
enum class MyEnum3(): <!CLASS_IN_SUPERTYPE_FOR_ENUM!>MyEnumBase<!>() {}
|
||||
|
||||
open class MyClass() {}
|
||||
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
package bug
|
||||
|
||||
public enum class Foo<T> {
|
||||
public enum class Foo<<!TYPE_PARAMETERS_IN_ENUM!>T<!>> {
|
||||
A()
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,9 +1,9 @@
|
||||
interface IA {
|
||||
override fun toString(): String = "IA"
|
||||
<!ANY_METHOD_IMPLEMENTED_IN_INTERFACE!>override fun toString(): String = "IA"<!>
|
||||
|
||||
override fun equals(other: Any?): Boolean = super.equals(other)
|
||||
<!ANY_METHOD_IMPLEMENTED_IN_INTERFACE!>override fun equals(other: Any?): Boolean = super.equals(other)<!>
|
||||
|
||||
override fun hashCode(): Int {
|
||||
<!ANY_METHOD_IMPLEMENTED_IN_INTERFACE!>override fun hashCode(): Int {
|
||||
return 42;
|
||||
}
|
||||
}<!>
|
||||
}
|
||||
+3
-3
@@ -1,13 +1,13 @@
|
||||
interface IA
|
||||
|
||||
interface IB : IA {
|
||||
override fun toString(): String = "IB"
|
||||
<!ANY_METHOD_IMPLEMENTED_IN_INTERFACE!>override fun toString(): String = "IB"<!>
|
||||
}
|
||||
|
||||
interface IC : IB {
|
||||
override fun toString(): String = "IC"
|
||||
<!ANY_METHOD_IMPLEMENTED_IN_INTERFACE!>override fun toString(): String = "IC"<!>
|
||||
}
|
||||
|
||||
interface ID : IC {
|
||||
override fun toString(): String = "ID"
|
||||
<!ANY_METHOD_IMPLEMENTED_IN_INTERFACE!>override fun toString(): String = "ID"<!>
|
||||
}
|
||||
+1
-1
@@ -7,5 +7,5 @@ interface IRight {
|
||||
}
|
||||
|
||||
interface IDiamond : ILeft, IRight {
|
||||
override fun toString(): String = "IDiamond"
|
||||
<!ANY_METHOD_IMPLEMENTED_IN_INTERFACE!>override fun toString(): String = "IDiamond"<!>
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
open class Aaa() {
|
||||
open fun foo() = 1
|
||||
}
|
||||
|
||||
open class Bbb() : Aaa() {
|
||||
override fun foo() = 2
|
||||
}
|
||||
|
||||
interface Ccc : Aaa
|
||||
|
||||
class Ddd() : Bbb(), Ccc
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
open class Aaa() {
|
||||
open fun foo() = 1
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ open class AL {
|
||||
fun get(i : Int) : Any? = i
|
||||
}
|
||||
|
||||
interface ALE<T> : AL {
|
||||
interface ALE<T> : <!INTERFACE_WITH_SUPERCLASS!>AL<!> {
|
||||
fun getOrNull(index: Int, value: T) : T {
|
||||
return get(index) as? T ?: value
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
sealed class Base
|
||||
|
||||
class Derived: Base() {
|
||||
class Derived2: Base()
|
||||
class Derived2: <!SEALED_SUPERTYPE!>Base<!>()
|
||||
}
|
||||
|
||||
fun test() {
|
||||
class Local: Base()
|
||||
class Local: <!SEALED_SUPERTYPE_IN_LOCAL_CLASS!>Base<!>()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
sealed class Sealed {
|
||||
object First: Sealed()
|
||||
open class NonFirst: Sealed() {
|
||||
object Second: NonFirst()
|
||||
object Third: NonFirst()
|
||||
fun foo(): Int {
|
||||
val s = object: Sealed() {}
|
||||
class Local: Sealed() {}
|
||||
return s.hashCode()
|
||||
}
|
||||
}
|
||||
val p: Sealed = object: Sealed() {}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
sealed class Sealed {
|
||||
object First: Sealed()
|
||||
open class NonFirst: Sealed() {
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
sealed class Base {
|
||||
fun foo() = Base()
|
||||
fun foo() = <!SEALED_CLASS_CONSTRUCTOR_CALL!>Base<!>()
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ class A {
|
||||
sealed class Base
|
||||
}
|
||||
|
||||
class Derived : A.Base()
|
||||
class Derived : <!SEALED_SUPERTYPE!>A.Base<!>()
|
||||
|
||||
fun test() {
|
||||
class DerivedLocal : A.Base()
|
||||
class DerivedLocal : <!SEALED_SUPERTYPE_IN_LOCAL_CLASS!>A.Base<!>()
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
interface A1 : <!UNRESOLVED_REFERENCE!>B<!>
|
||||
|
||||
interface A2 : <!UNRESOLVED_REFERENCE!>B<!>()
|
||||
interface A2 : <!SUPERTYPE_INITIALIZED_IN_INTERFACE, UNRESOLVED_REFERENCE!>B<!>()
|
||||
|
||||
class A3 : <!UNRESOLVED_REFERENCE!>B<!>, <!UNRESOLVED_REFERENCE!>B<!>
|
||||
|
||||
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
open class A {
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
interface ATrait : A {
|
||||
|
||||
override fun foo() {
|
||||
<!SUPERCLASS_NOT_ACCESSIBLE_FROM_INTERFACE!>super<A><!>.foo()
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
open class A {
|
||||
open fun foo() {}
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
interface AnyTrait : Any
|
||||
|
||||
class Foo : AnyTrait
|
||||
|
||||
class Bar : AnyTrait, Any()
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
interface AnyTrait : <!INTERFACE_WITH_SUPERCLASS!>Any<!>
|
||||
|
||||
class Foo : AnyTrait
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
open class bar()
|
||||
|
||||
interface Foo() : bar(), bar, bar {
|
||||
interface Foo() : <!INTERFACE_WITH_SUPERCLASS!>bar<!>(), bar, bar {
|
||||
}
|
||||
|
||||
interface Foo2 : bar, Foo {
|
||||
interface Foo2 : <!INTERFACE_WITH_SUPERCLASS!>bar<!>, Foo {
|
||||
}
|
||||
|
||||
open class Foo1() : bar(), bar, Foo, <!UNRESOLVED_REFERENCE!>Foo<!>() {}
|
||||
|
||||
+2
-2
@@ -17,8 +17,8 @@ val test3a = <!HIDDEN!>EnumClass<!>()
|
||||
|
||||
sealed class SealedClass
|
||||
typealias Test4 = SealedClass
|
||||
val test4 = Test4()
|
||||
val test4a = SealedClass()
|
||||
val test4 = <!SEALED_CLASS_CONSTRUCTOR_CALL!>Test4<!>()
|
||||
val test4a = <!SEALED_CLASS_CONSTRUCTOR_CALL!>SealedClass<!>()
|
||||
|
||||
class Outer {
|
||||
inner class Inner
|
||||
|
||||
Reference in New Issue
Block a user