diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index ed873dc655c..63d404a27a2 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -21357,6 +21357,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/inlineClasses/kt51353.kt"); } + @Test + @TestMetadata("kt51672.kt") + public void testKt51672() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt51672.kt"); + } + @Test @TestMetadata("mangledDefaultParameterFunction.kt") public void testMangledDefaultParameterFunction() throws Exception { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt index 41ff4a7b023..a57edfa4c8a 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt @@ -234,12 +234,11 @@ class MemoizedInlineClassReplacements( val replacement = buildReplacementInner(function, replacementOrigin, noFakeOverride, useOldManglingScheme, body) // When using the new mangling scheme we might run into dependencies using the old scheme // for which we will fall back to the old mangling scheme as well. - if ( - !useOldManglingScheme && - replacement.name.asString().contains("-") && - function.parentClassId?.let { classFileContainsMethod(it, replacement, context) } == false - ) { - return buildReplacementInner(function, replacementOrigin, noFakeOverride, true, body) + if (!useOldManglingScheme && replacement.name.asString().contains('-') && function.parentClassId != null) { + val resolved = (function as? IrSimpleFunction)?.resolveFakeOverride(true) + if (resolved?.parentClassId?.let { classFileContainsMethod(it, replacement, context) } == false) { + return buildReplacementInner(function, replacementOrigin, noFakeOverride, true, body) + } } return replacement } diff --git a/compiler/testData/codegen/box/inlineClasses/kt51672.kt b/compiler/testData/codegen/box/inlineClasses/kt51672.kt new file mode 100644 index 00000000000..449e71ff5de --- /dev/null +++ b/compiler/testData/codegen/box/inlineClasses/kt51672.kt @@ -0,0 +1,20 @@ +// MODULE: lib +// WITH_STDLIB +// TARGET_BACKEND: JVM +// FILE: lib.kt +@JvmInline +value class S(val value: String) + +interface A { + fun f(s: S): S = s +} + +interface B : A + +// MODULE: main(lib) +// FILE: main.kt +interface C : B + +fun box(): String { + return object : C {}.f(S("OK")).value +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index ed2d15d70ae..decad35f44e 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -20907,6 +20907,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inlineClasses/kt51353.kt"); } + @Test + @TestMetadata("kt51672.kt") + public void testKt51672() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt51672.kt"); + } + @Test @TestMetadata("mangledDefaultParameterFunction.kt") public void testMangledDefaultParameterFunction() throws Exception { 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 9a104651166..57b7d80c5e5 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 @@ -21357,6 +21357,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inlineClasses/kt51353.kt"); } + @Test + @TestMetadata("kt51672.kt") + public void testKt51672() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt51672.kt"); + } + @Test @TestMetadata("mangledDefaultParameterFunction.kt") public void testMangledDefaultParameterFunction() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 5858ce92b54..a72cbfbe964 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -17451,6 +17451,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inlineClasses/kt51353.kt"); } + @TestMetadata("kt51672.kt") + public void testKt51672() throws Exception { + runTest("compiler/testData/codegen/box/inlineClasses/kt51672.kt"); + } + @TestMetadata("mangledDefaultParameterFunction.kt") public void testMangledDefaultParameterFunction() throws Exception { runTest("compiler/testData/codegen/box/inlineClasses/mangledDefaultParameterFunction.kt", TransformersFunctions.getReplaceOptionalJvmInlineAnnotationWithReal());