From 39fda3535a01a8fed11737b98616db2d4258a0ff Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 10 Nov 2023 11:11:33 +0100 Subject: [PATCH] IR: fix internal visibility check in override builder In case there are Java sources in the module, K2 creates two instances of `FirModuleDescriptor` with the same name: one for Kotlin sources, one for Java sources. When building fake overrides in IR, it's important to understand that those are the same module. Currently it's done by comparing the names, but in the future it may be improved in KT-62534. The changed test was in fact unrelated to KT-61805, and the problem there was rather that no fake override was created for internal property `schemeState` in `InspectionProfileModifiableModel`. --- .../kotlin/ir/overrides/FakeOverrideBuilderStrategy.kt | 7 +------ .../box/javaInterop/syntheticPropClashingWithJvmField.kt | 1 - 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideBuilderStrategy.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideBuilderStrategy.kt index 7b2a9e33417..0a057d907de 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideBuilderStrategy.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/FakeOverrideBuilderStrategy.kt @@ -109,15 +109,10 @@ private fun isInFriendModules( toModule: ModuleDescriptor, friendModules: Map>, ): Boolean { - if (friendModules.isEmpty()) return false - val fromModuleName = fromModule.name.asStringStripSpecialMarkers() - - val fromFriends = friendModules[fromModuleName] ?: return false - val toModuleName = toModule.name.asStringStripSpecialMarkers() - return toModuleName in fromFriends + return fromModuleName == toModuleName || friendModules[fromModuleName]?.contains(toModuleName) == true } fun buildFakeOverrideMember( diff --git a/compiler/testData/codegen/box/javaInterop/syntheticPropClashingWithJvmField.kt b/compiler/testData/codegen/box/javaInterop/syntheticPropClashingWithJvmField.kt index 200f1d68364..36174bbcfc0 100644 --- a/compiler/testData/codegen/box/javaInterop/syntheticPropClashingWithJvmField.kt +++ b/compiler/testData/codegen/box/javaInterop/syntheticPropClashingWithJvmField.kt @@ -1,5 +1,4 @@ // TARGET_BACKEND: JVM -// IGNORE_CODEGEN_WITH_IR_FAKE_OVERRIDE_GENERATION: KT-61805 // WITH_STDLIB // ISSUE: KT-56538