diff --git a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java index dae0ca80487bc..26194dd52c416 100644 --- a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java +++ b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java @@ -8986,6 +8986,12 @@ public void testKt65555() { runTest("compiler/testData/codegen/box/collections/kt65555.kt"); } + @Test + @TestMetadata("kt72039.kt") + public void testKt72039() { + runTest("compiler/testData/codegen/box/collections/kt72039.kt"); + } + @Test @TestMetadata("mutableList.kt") public void testMutableList() { diff --git a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java index ca4669c78e092..c525d059c83da 100644 --- a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java +++ b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java @@ -8986,6 +8986,12 @@ public void testKt65555() { runTest("compiler/testData/codegen/box/collections/kt65555.kt"); } + @Test + @TestMetadata("kt72039.kt") + public void testKt72039() { + runTest("compiler/testData/codegen/box/collections/kt72039.kt"); + } + @Test @TestMetadata("mutableList.kt") public void testMutableList() { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 640a9a9e1d8f6..e4b9c4eb03daa 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -8873,6 +8873,12 @@ public void testKt65555() { runTest("compiler/testData/codegen/box/collections/kt65555.kt"); } + @Test + @TestMetadata("kt72039.kt") + public void testKt72039() { + runTest("compiler/testData/codegen/box/collections/kt72039.kt"); + } + @Test @TestMetadata("mutableList.kt") public void testMutableList() { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index e995c40497902..89629d9467ee7 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -8873,6 +8873,12 @@ public void testKt65555() { runTest("compiler/testData/codegen/box/collections/kt65555.kt"); } + @Test + @TestMetadata("kt72039.kt") + public void testKt72039() { + runTest("compiler/testData/codegen/box/collections/kt72039.kt"); + } + @Test @TestMetadata("mutableList.kt") public void testMutableList() { diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt index 652468b59f1b5..fb7bee4b9fafe 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt @@ -227,18 +227,13 @@ internal class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPas isFinal = false, ) - // The part after '?:' is needed for methods with default implementations in collection interfaces: - // MutableMap.remove() and getOrDefault(). - val superTarget = overriddenFromClass.takeIf { !it.isFakeOverride || !specialBridge.isOverriding } - ?: specialBridge.overridden - - if (superBridge.signature == superTarget.jvmMethod) { + if (superBridge.signature == targetFunction.jvmMethod) { // If the resulting bridge to a super member matches the signature of the bridge callee, // bridge is not needed. irFunction } else { irClass.declarations.remove(irFunction) - irClass.addSpecialBridge(superBridge, superTarget) + irClass.addSpecialBridge(superBridge, targetFunction) } } diff --git a/compiler/testData/codegen/box/collections/kt72039.kt b/compiler/testData/codegen/box/collections/kt72039.kt new file mode 100644 index 0000000000000..e2b59c3d7cbcd --- /dev/null +++ b/compiler/testData/codegen/box/collections/kt72039.kt @@ -0,0 +1,18 @@ +// TARGET_BACKEND: JVM +// FULL_JDK +// FILE: kt72039.kt +fun box(): String { + Test1().test() + return "OK" +} + +class Test1 : Test0() + +// FILE: Test0.java +import java.util.concurrent.ConcurrentHashMap; + +public class Test0 extends ConcurrentHashMap { + public void test() { + new Test1().keySet(); + } +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java index a40d82b654a75..2da9293569bc6 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java @@ -8873,6 +8873,12 @@ public void testKt65555() { runTest("compiler/testData/codegen/box/collections/kt65555.kt"); } + @Test + @TestMetadata("kt72039.kt") + public void testKt72039() { + runTest("compiler/testData/codegen/box/collections/kt72039.kt"); + } + @Test @TestMetadata("mutableList.kt") public void testMutableList() { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index bf89ba2f53f8d..65966b980356f 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -8873,6 +8873,12 @@ public void testKt65555() { runTest("compiler/testData/codegen/box/collections/kt65555.kt"); } + @Test + @TestMetadata("kt72039.kt") + public void testKt72039() { + runTest("compiler/testData/codegen/box/collections/kt72039.kt"); + } + @Test @TestMetadata("mutableList.kt") public void testMutableList() { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java index e06c497c84ffc..edd97b1dc0e64 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java @@ -8873,6 +8873,12 @@ public void testKt65555() { runTest("compiler/testData/codegen/box/collections/kt65555.kt"); } + @Test + @TestMetadata("kt72039.kt") + public void testKt72039() { + runTest("compiler/testData/codegen/box/collections/kt72039.kt"); + } + @Test @TestMetadata("mutableList.kt") public void testMutableList() {