IR: repair collectAndFilterRealOverrides

This commit is contained in:
Georgy Bronnikov
2021-05-22 13:22:06 +03:00
parent 7e6782d684
commit 91387e644f
2 changed files with 7 additions and 3 deletions
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
import org.jetbrains.kotlin.ir.symbols.*
import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.collectAndFilterRealOverrides
import org.jetbrains.kotlin.ir.util.isReal
import org.jetbrains.kotlin.ir.util.render
import org.jetbrains.kotlin.resolve.OverridingUtil.OverrideCompatibilityInfo
@@ -86,9 +86,12 @@ fun <S : IrSymbol, T : IrOverridableDeclaration<S>> Collection<T>.collectAndFilt
return realOverrides.values.toSet()
}
fun Collection<IrOverridableMember>.collectAndFilterRealOverrides(): Set<IrOverridableMember> =
@Suppress("UNCHECKED_CAST")
(this as Collection<IrOverridableDeclaration<*>>).collectAndFilterRealOverrides()
@Suppress("UNCHECKED_CAST")
fun Collection<IrOverridableMember>.collectAndFilterRealOverrides(): Set<IrOverridableMember> = when {
all { it is IrSimpleFunction } -> (this as Collection<IrSimpleFunction>).collectAndFilterRealOverrides()
all { it is IrProperty } -> (this as Collection<IrProperty>).collectAndFilterRealOverrides()
else -> error("all members should be of the same kind, got ${map { it.render() }}")
}
// TODO: use this implementation instead of any other
fun <S : IrSymbol, T : IrOverridableDeclaration<S>> T.resolveFakeOverride(