FIR checker: fix positions of type mismatch on overrides

To handle implicit return types, those should be reported on
declarations with return type positioning strategy, instead of
return type itself.
This commit is contained in:
Jinseong Jeon
2021-01-28 14:00:47 -08:00
committed by Dmitriy Novozhilov
parent 571c4ce398
commit b48835f3ce
17 changed files with 120 additions and 149 deletions
@@ -1,26 +0,0 @@
interface A<H> {
fun foo() : Int = 1
fun foo2() : Int = 1
fun foo1() : Int = 1
val a : Int
val a1 : Int
val g : Iterator<H>
fun <T> g() : T
fun <T> g1() : T
}
abstract class B<H>() : A<H> {
override fun foo() {
}
override fun foo2() : <!RETURN_TYPE_MISMATCH_ON_OVERRIDE!>Unit<!> {
}
override val a : <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>Double<!> = 1.toDouble()
override val a1 = 1.toDouble()
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 : <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>Iterator<Int><!>
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
interface A<H> {
fun foo() : Int = 1
fun foo2() : Int = 1
@@ -1,21 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.reflect.KProperty
interface A {
val prop: Int
}
class AImpl: A {
override val prop by Delegate()
}
fun foo() {
AImpl().prop
}
class Delegate {
operator fun getValue(t: Any?, p: KProperty<*>): <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>String<!> {
return ""
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
import kotlin.reflect.KProperty