FirSupertypesChecker: implement six more diagnostics

This commit is contained in:
Mikhail Glukhikh
2021-05-06 13:57:08 +03:00
parent db828a6aad
commit 0f9f63400e
73 changed files with 337 additions and 230 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ class WithPC1(a : Int) {
}
class Foo() : WithPC0, <!SYNTAX!>this<!>() {
class Foo() : <!FINAL_SUPERTYPE!>WithPC0<!>, <!SYNTAX!>this<!>() {
}
@@ -3,4 +3,4 @@ interface B<T> {}
interface C<T> {}
interface D<T> {}
interface Test : A<in Int>, B<out Int>, C<*>???, D<Int> {}
interface Test : A<in Int>, B<out Int>, C<*>??<!NULLABLE_SUPERTYPE!>?<!>, D<Int> {}
@@ -28,22 +28,22 @@ interface Test1 : <!INTERFACE_WITH_SUPERCLASS, SUPERTYPE_INITIALIZED_IN_INTERFAC
interface Test2 : <!INTERFACE_WITH_SUPERCLASS!>C2<!> {}
interface Test3 : <!INTERFACE_WITH_SUPERCLASS!>C2<!>, C3 {}
interface Test3 : <!INTERFACE_WITH_SUPERCLASS!>C2<!>, <!MANY_CLASSES_IN_SUPERTYPE_LIST!>C3<!> {}
interface Test4 : T1 {}
interface Test5 : T1, T1 {}
interface Test5 : T1, <!SUPERTYPE_APPEARS_TWICE!>T1<!> {}
interface Test6 : <!INTERFACE_WITH_SUPERCLASS!>C1<!> {}
interface Test6 : <!FINAL_SUPERTYPE, INTERFACE_WITH_SUPERCLASS!>C1<!> {}
class CTest1() : OC1() {}
class CTest2 : <!SUPERTYPE_NOT_INITIALIZED!>C2<!> {}
class CTest3 : <!SUPERTYPE_NOT_INITIALIZED!>C2<!>, C3 {}
class CTest3 : <!SUPERTYPE_NOT_INITIALIZED!>C2<!>, <!MANY_CLASSES_IN_SUPERTYPE_LIST!>C3<!> {}
class CTest4 : T1 {}
class CTest5 : T1, T1 {}
class CTest5 : T1, <!SUPERTYPE_APPEARS_TWICE!>T1<!> {}
class CTest6 : <!SUPERTYPE_NOT_INITIALIZED!>C1<!> {}
class CTest6 : <!FINAL_SUPERTYPE, SUPERTYPE_NOT_INITIALIZED!>C1<!> {}
@@ -10,4 +10,4 @@ data class Nasty(val z: Int, val y: Int): Base(z)
data class Complex(val y: Int): SuperInterface, SuperClass()
data class SubData(val sss: String) : Complex(42)
data class SubData(val sss: String) : <!FINAL_SUPERTYPE!>Complex<!>(42)
@@ -23,6 +23,6 @@ public abstract class MyClass : Base1, Base2 {
}
}
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>class A<!> : MyClass(), Base1 by Delegate1(), Base1 by Delegate2() {
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>class A<!> : MyClass(), Base1 by Delegate1(), <!SUPERTYPE_APPEARS_TWICE!>Base1<!> by Delegate2() {
}
@@ -1,7 +1,7 @@
// FILE: test.kt
enum class MyEnum(): <!CLASS_IN_SUPERTYPE_FOR_ENUM!>MyClass<!>() {}
enum class MyEnum2(): MyTrait {}
enum class MyEnum3(): <!CLASS_IN_SUPERTYPE_FOR_ENUM!>MyEnumBase<!>() {}
enum class MyEnum3(): <!CLASS_IN_SUPERTYPE_FOR_ENUM, FINAL_SUPERTYPE!>MyEnumBase<!>() {}
open class MyClass() {}
@@ -8,6 +8,6 @@ open enum class MyEnum() {
enum class MyEnum2() {}
class MyClass(): <!INVISIBLE_REFERENCE!>MyEnum2<!>() {}
class MyClass(): <!FINAL_SUPERTYPE, INVISIBLE_REFERENCE!>MyEnum2<!>() {}
class MyClass2(): <!UNRESOLVED_REFERENCE!>MyJavaEnum<!>() {}
class MyClass2(): <!FINAL_SUPERTYPE, UNRESOLVED_REFERENCE!>MyJavaEnum<!>() {}
@@ -1,19 +0,0 @@
// FILE: a.kt
package foo
object Bar {
fun bar() {}
}
// FILE: b.kt
package baz
import foo.Bar
class C: Bar
fun test() {
Bar.bar()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
package foo
@@ -11,4 +11,4 @@ package a
import pack1.SomeClass.*
private class X : <!EXPOSED_SUPER_CLASS, INVISIBLE_REFERENCE!>N<!>()
private class X : <!EXPOSED_SUPER_CLASS, FINAL_SUPERTYPE, INVISIBLE_REFERENCE!>N<!>()
@@ -1,6 +1,6 @@
class Test {
@`InnerAnnotation` @InnerAnnotation
companion object : StaticClass(), <!UNRESOLVED_REFERENCE!>InnerClass<!>() {
companion object : StaticClass(), <!MANY_CLASSES_IN_SUPERTYPE_LIST, UNRESOLVED_REFERENCE!>InnerClass<!>() {
}
+4 -4
View File
@@ -6,12 +6,12 @@ class Outer {
class FinalInner
class Nested1 : OpenNested()
class Nested2 : FinalNested()
class Nested2 : <!FINAL_SUPERTYPE!>FinalNested<!>()
class Nested3 : <!UNRESOLVED_REFERENCE!>OpenInner<!>()
class Nested4 : FinalInner()
class Nested4 : <!FINAL_SUPERTYPE!>FinalInner<!>()
inner class Inner1 : OpenNested()
inner class Inner2 : FinalNested()
inner class Inner2 : <!FINAL_SUPERTYPE!>FinalNested<!>()
inner class Inner3 : OpenInner()
inner class Inner4 : FinalInner()
inner class Inner4 : <!FINAL_SUPERTYPE!>FinalInner<!>()
}
@@ -1,5 +1,5 @@
interface A
interface X: A?? {
interface X: A?<!NULLABLE_SUPERTYPE!>?<!> {
}
+1 -1
View File
@@ -14,7 +14,7 @@ package toplevelObjectDeclarations
}
}<!>
object B : A {}
object B : <!SINGLETON_IN_SUPERTYPE!>A<!> {}
val x = A.foo()
@@ -1,5 +0,0 @@
package toplevelObjectDeclarations
object CObj {}
object DOjb : CObj {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
package toplevelObjectDeclarations
object CObj {}
@@ -1,28 +0,0 @@
class Foo {
<!NON_FINAL_MEMBER_IN_FINAL_CLASS!>open<!> fun openFoo() {}
fun finalFoo() {}
}
class Bar : Foo() {
override fun openFoo() {}
<!OVERRIDING_FINAL_MEMBER!>override<!> fun finalFoo() {}
}
open class A1 {
open fun foo() {}
}
class B1 : A1()
class C1 : B1() {
override fun foo() {}
}
abstract class A2 {
abstract fun foo()
}
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED!>class B2<!> : A2()
class C2 : B2() {
override fun foo() {}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
class Foo {
<!NON_FINAL_MEMBER_IN_FINAL_CLASS!>open<!> fun openFoo() {}
fun finalFoo() {}
@@ -7,7 +7,7 @@ val bImpl: B.Companion.Interface
get() = null!!
interface A {
companion object : Nested(), Interface by aImpl, I<Nested, Interface> {
companion object : <!FINAL_SUPERTYPE!>Nested<!>(), Interface by aImpl, I<Nested, Interface> {
class Nested
@@ -16,7 +16,7 @@ interface A {
}
class B {
companion object : Nested(), Interface by aImpl, I<Nested, Interface> {
companion object : <!FINAL_SUPERTYPE!>Nested<!>(), Interface by aImpl, I<Nested, Interface> {
class Nested
@@ -1,24 +0,0 @@
class A : Double.() -> Unit {
override fun invoke(p1: Double) {}
}
class B : Int.(Double) -> Unit {
override fun invoke(p1: Int, p2: Double) {}
}
open class C {}
abstract class A0 : C.() -> Int
abstract class A1 : C.(Int) -> Int
abstract class A2 : C.(Int, String) -> Int
open class D<T> {}
abstract class B0<T> : D<T>.() -> Int
abstract class B1<T> : D<T>.(C) -> Int
abstract class B2<T> : D<T>.(T, C) -> T
interface E<T> {}
abstract class C0: C(), Int.() -> Double
abstract class C1<T>: C(), E<T>, Int.(C) -> Double
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
class A : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>Double.() -> Unit<!> {
override fun invoke(p1: Double) {}
}
@@ -1,10 +1,10 @@
open class bar()
interface <!CONSTRUCTOR_IN_INTERFACE!>Foo()<!> : <!INTERFACE_WITH_SUPERCLASS, SUPERTYPE_INITIALIZED_IN_INTERFACE!>bar<!>(), bar, bar {
interface <!CONSTRUCTOR_IN_INTERFACE!>Foo()<!> : <!INTERFACE_WITH_SUPERCLASS, SUPERTYPE_INITIALIZED_IN_INTERFACE!>bar<!>(), <!MANY_CLASSES_IN_SUPERTYPE_LIST, SUPERTYPE_APPEARS_TWICE!>bar<!>, <!MANY_CLASSES_IN_SUPERTYPE_LIST, SUPERTYPE_APPEARS_TWICE!>bar<!> {
}
interface Foo2 : <!INTERFACE_WITH_SUPERCLASS!>bar<!>, Foo {
}
open class Foo1() : bar(), bar, Foo, <!UNRESOLVED_REFERENCE!>Foo<!>() {}
open class Foo12 : bar(), bar {}
open class Foo1() : bar(), <!MANY_CLASSES_IN_SUPERTYPE_LIST, SUPERTYPE_APPEARS_TWICE!>bar<!>, Foo, <!SUPERTYPE_APPEARS_TWICE, UNRESOLVED_REFERENCE!>Foo<!>() {}
open class Foo12 : bar(), <!MANY_CLASSES_IN_SUPERTYPE_LIST, SUPERTYPE_APPEARS_TWICE!>bar<!> {}
@@ -29,7 +29,7 @@ interface Supertype1 : suspend () -> Unit {
}
interface Supertype2 : suspend String.() -> Unit {
interface Supertype2 : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>suspend String.() -> Unit<!> {
}
@@ -9,7 +9,7 @@ fun test() {
a <!ARGUMENT_TYPE_MISMATCH!>{}<!>
}
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Ext<!> : String.() -> Unit {
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Ext<!> : <!SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE!>String.() -> Unit<!> {
}
fun test2() {