[FIR] Add 3 type mismatch diagnostics
This commit is contained in:
@@ -13,14 +13,14 @@ interface A<H> {
|
||||
abstract class B<H>() : A<H> {
|
||||
override fun foo() {
|
||||
}
|
||||
override fun foo2() : Unit {
|
||||
override fun foo2() : <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Unit<!> {
|
||||
}
|
||||
|
||||
override val a : Double = 1.toDouble()
|
||||
override val a : <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>Double<!> = 1.toDouble()
|
||||
override val a1 = 1.toDouble()
|
||||
|
||||
abstract override fun <X> g() : Int
|
||||
abstract override fun <X> g1() : List<X>
|
||||
abstract override fun <X> g() : <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Int<!>
|
||||
abstract override fun <X> g1() : <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>List<X><!>
|
||||
|
||||
abstract override val g : Iterator<Int>
|
||||
abstract override val g : <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>Iterator<Int><!>
|
||||
}
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
abstract class A {
|
||||
abstract var x: Int;
|
||||
abstract fun foo() : Int;
|
||||
}
|
||||
|
||||
abstract class C : A() {
|
||||
override abstract var x: String =<!SYNTAX!><!> <!SYNTAX!>?<!>
|
||||
override abstract fun foo(): String =<!SYNTAX!><!> <!SYNTAX!>?<!>
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
abstract class A {
|
||||
abstract var x: Int;
|
||||
abstract fun foo() : Int;
|
||||
|
||||
+3
-3
@@ -15,12 +15,12 @@ interface A {
|
||||
|
||||
@An
|
||||
interface B : A {
|
||||
override val p1: Int
|
||||
override val p1: <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>Int<!>
|
||||
@An
|
||||
override val p2: @An String
|
||||
override fun test(arg: String): Int
|
||||
override fun test(arg: String): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Int<!>
|
||||
}
|
||||
|
||||
interface C : A {
|
||||
override var p2: Int
|
||||
override var p2: <!VAR_TYPE_MISMATCH_ON_OVERRIDE!>Int<!>
|
||||
}
|
||||
Vendored
+2
-2
@@ -27,7 +27,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
annotation class An
|
||||
|
||||
class B : A {
|
||||
override fun foo(): String? = null
|
||||
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = null
|
||||
}
|
||||
|
||||
@An
|
||||
@@ -38,5 +38,5 @@ public interface C {
|
||||
}
|
||||
|
||||
class D : C {
|
||||
override fun foo(): String? = null
|
||||
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>String?<!> = null
|
||||
}
|
||||
|
||||
+1
-1
@@ -21,5 +21,5 @@ data class FooImplAll(val num: Int) : Foo {
|
||||
|
||||
data class WrongSignatures(val num: Int) : Foo {
|
||||
override fun equals(other: WrongSignatures) = false
|
||||
override fun hashCode(): Boolean = true
|
||||
override fun hashCode(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Boolean<!> = true
|
||||
}
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ fun foo() {
|
||||
}
|
||||
|
||||
class Delegate {
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): String {
|
||||
operator fun getValue(t: Any?, p: KProperty<*>): <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>String<!> {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -13,5 +13,5 @@ object AImpl : IA {
|
||||
open class C : IA by AImpl, IB
|
||||
|
||||
class D : C() {
|
||||
override fun foo(): Double = 3.14
|
||||
override fun foo(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Double<!> = 3.14
|
||||
}
|
||||
|
||||
+10
-1
@@ -11,7 +11,16 @@ import java.util.*;
|
||||
|
||||
abstract class B : MutableList<Int>, AbstractList<Int>() {
|
||||
override fun removeAt(index: Int): Int = null!!
|
||||
override fun remove(element: Int): Boolean = null!!
|
||||
override fun remove(element: Int): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Boolean<!> = null!!
|
||||
}
|
||||
|
||||
abstract class D : AbstractList<Int>() {
|
||||
// removeAt() doesn't exist in java/util/AbstractList, it's a
|
||||
// fake override of the method from kotlin/collections/MutableList
|
||||
override fun removeAt(index: Int): Int = null!!
|
||||
// AbstractList::remove() should return Int here. No fake overrides created.
|
||||
// This may be a bug because the old compiler doesn't report a diagnostic here.
|
||||
override fun remove(element: Int): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Boolean<!> = null!!
|
||||
}
|
||||
|
||||
fun main(a: A, b: B, c: ArrayList<Int>) {
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
package test
|
||||
|
||||
interface X {
|
||||
fun foo(): String? {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
interface Y {
|
||||
fun foo(): String {
|
||||
return "foo"
|
||||
}
|
||||
}
|
||||
|
||||
interface Incompatible {
|
||||
fun foo(): Int {
|
||||
return 3
|
||||
}
|
||||
}
|
||||
|
||||
class Test1(val x: X) : X by x, Y {
|
||||
override fun foo(): String? {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
class Test2(val x: X) : X by x, Y {
|
||||
override fun foo(): String {
|
||||
return "foo"
|
||||
}
|
||||
}
|
||||
|
||||
class Test3(val y: Y) : X, Y by y {
|
||||
override fun foo(): String? {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
class Test4(val y: Y) : X, Y by y {
|
||||
override fun foo(): String {
|
||||
return "foo"
|
||||
}
|
||||
}
|
||||
|
||||
class Test5(val y: Y, val x: X) : X by x, Y by y, Incompatible {
|
||||
override fun foo(): Int {
|
||||
return 3
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
package test
|
||||
|
||||
interface X {
|
||||
|
||||
@@ -3,7 +3,7 @@ interface A {
|
||||
}
|
||||
|
||||
interface B : A {
|
||||
override fun test(): Unit = "B"
|
||||
override fun test(): <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Unit<!> = "B"
|
||||
}
|
||||
|
||||
open class C : A
|
||||
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public interface A {
|
||||
@Nullable
|
||||
String foo();
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public interface B {
|
||||
@NotNull
|
||||
String foo();
|
||||
}
|
||||
|
||||
// FILE: C.kt
|
||||
|
||||
class C1 : A, B {
|
||||
override fun foo(): String? = ""
|
||||
}
|
||||
|
||||
class C2 : A, B {
|
||||
override fun foo(): String = ""
|
||||
}
|
||||
|
||||
interface I : A, B
|
||||
|
||||
class C3 : I {
|
||||
override fun foo(): String? = ""
|
||||
}
|
||||
|
||||
class C4 : I {
|
||||
override fun foo(): String = ""
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: A.java
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user