From d9dd7f6126d283ed0325bb75193c112b1c1e026e Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Sat, 22 May 2021 13:22:06 +0300 Subject: [PATCH] IR: repair collectAndFilterRealOverrides (cherry picked from commit 91387e644f1631e0a00d7e032834db15cea6bc88) --- .../jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt | 1 + .../org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt index 1439340e487dc..4f618091bef6c 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt @@ -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 diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt index 8b0003ff2b296..a2ce8b0561320 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt @@ -86,9 +86,12 @@ fun > Collection.collectAndFilt return realOverrides.values.toSet() } -fun Collection.collectAndFilterRealOverrides(): Set = - @Suppress("UNCHECKED_CAST") - (this as Collection>).collectAndFilterRealOverrides() +@Suppress("UNCHECKED_CAST") +fun Collection.collectAndFilterRealOverrides(): Set = when { + all { it is IrSimpleFunction } -> (this as Collection).collectAndFilterRealOverrides() + all { it is IrProperty } -> (this as Collection).collectAndFilterRealOverrides() + else -> error("all members should be of the same kind, got ${map { it.render() }}") +} // TODO: use this implementation instead of any other fun > T.resolveFakeOverride(