commit | ee6b75dcefaa1c7710c5115d2c472d135969e08c | [log] [tgz] |
---|---|---|
author | Dmitriy Dolovov <Dmitriy.Dolovov@jetbrains.com> | Wed Jun 05 16:42:00 2024 +0200 |
committer | Space Team <noreply@jetbrains.team> | Thu Jun 06 12:37:53 2024 +0000 |
tree | 7551d9b5b5df9a16e5af255de45920107652c14a | |
parent | e1b0c5f352a4deff4f0d4dd5ef1a4ddbbaa1590d [diff] |
[Actualizer] Fix: Generate missing FOs of functions actualized by FOs ^KT-68801
diff --git a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/SpecialFakeOverrideSymbolsResolver.kt b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/SpecialFakeOverrideSymbolsResolver.kt index d02950e..33aa5c8 100644 --- a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/SpecialFakeOverrideSymbolsResolver.kt +++ b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/SpecialFakeOverrideSymbolsResolver.kt
@@ -114,9 +114,7 @@ private fun IrOverridableDeclaration<*>.collectOverrides(visited: MutableSet<IrSymbol>): Sequence<IrSymbol> = sequence { if (visited.add(symbol)) { - if (!isFakeOverride) { - yield(symbol) - } + yield(symbol) for (overridden in overriddenSymbols) { yieldAll((overridden.remap().owner as IrOverridableDeclaration<*>).collectOverrides(visited)) }
diff --git a/compiler/testData/codegen/box/multiplatform/k2/kt68801.kt b/compiler/testData/codegen/box/multiplatform/k2/kt68801.kt index 5fb6d73..72e2793 100644 --- a/compiler/testData/codegen/box/multiplatform/k2/kt68801.kt +++ b/compiler/testData/codegen/box/multiplatform/k2/kt68801.kt
@@ -1,8 +1,5 @@ // ISSUE: KT-68801 // LANGUAGE: +MultiPlatformProjects -// IGNORE_BACKEND: JVM_IR JS_IR JS_IR_ES6 WASM NATIVE -// ^^^ This test fails with `java.lang.IllegalArgumentException: There should be no references to expect classes at this point` -// at org.jetbrains.kotlin.backend.common.actualizer.SpecialFakeOverrideSymbolsResolver.processClass(SpecialFakeOverrideSymbolsResolver.kt:97) // MODULE: common // FILE: common.kt
diff --git a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.fir.kt b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.fir.kt index e5996c6..705de86 100644 --- a/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.fir.kt +++ b/compiler/testData/diagnostics/tests/multiplatform/hmpp/hmppModalityClash.fir.kt
@@ -1,8 +1,8 @@ // MODULE: common // TARGET_PLATFORM: Common -expect abstract class Foo() { - abstract fun foo() -} +<!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>expect abstract class Foo() { + <!EXPECT_ACTUAL_INCOMPATIBILITY{JVM}!>abstract fun foo()<!> +}<!> <!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED{METADATA}!>class Impl<!> : Foo() {}