FIR error repro: property type mismatch in override from light classes

This commit is contained in:
Mikhail Glukhikh
2021-03-19 09:06:47 +03:00
parent b6f1a442fb
commit 4768700600
4 changed files with 51 additions and 0 deletions
@@ -0,0 +1,27 @@
FILE: lightMember.kt
public abstract interface PsiMember : R|kotlin/Any| {
}
public abstract interface PsiField : R|PsiMember| {
}
public abstract class LightMemberImpl<out D : R|PsiMember|> : R|kotlin/Any| {
public constructor<out D : R|PsiMember|>(computeRealDelegate: R|() -> D|): R|LightMemberImpl<D>| {
super<R|kotlin/Any|>()
}
public open val delegate: R|D|by R|kotlin/lazy|<R|D|>(R|<local>/computeRealDelegate|)
public get(): R|D| {
^ this@R|/LightMemberImpl|.D|/LightMemberImpl.delegate|.R|kotlin/getValue|<R|D|>(this@R|/LightMemberImpl|, ::R|/LightMemberImpl.delegate|)
}
}
public abstract class LightFieldImpl<D : R|PsiField|> : R|LightMemberImpl<PsiField>| {
public constructor<D : R|PsiField|>(computeRealDelegate: R|() -> D|): R|LightFieldImpl<D>| {
super<R|LightMemberImpl<PsiField>|>(R|<local>/computeRealDelegate|)
}
public open override val delegate: R|D|
public get(): R|D| {
^ this@R|/LightFieldImpl|.super<R|LightMemberImpl<PsiField>|>.R|SubstitutionOverride</LightMemberImpl.delegate: R|PsiField|>|
}
}
@@ -0,0 +1,12 @@
interface PsiMember
interface PsiField : PsiMember
abstract class LightMemberImpl<out D : PsiMember>(computeRealDelegate: () -> D) {
open val delegate by lazy(computeRealDelegate)
}
abstract class LightFieldImpl<D : PsiField>(computeRealDelegate: () -> D) : LightMemberImpl<PsiField>(computeRealDelegate) {
override val delegate: <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>D<!>
get() = super.delegate
}