diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index 85dfb71ec8a..c253d046400 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.backend.common.bridges.Bridge; import org.jetbrains.kotlin.backend.common.bridges.ImplKt; import org.jetbrains.kotlin.codegen.annotation.AnnotatedWithOnlyTargetedAnnotations; import org.jetbrains.kotlin.codegen.context.*; -import org.jetbrains.kotlin.codegen.optimization.OptimizationMethodVisitor; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper; import org.jetbrains.kotlin.descriptors.*; @@ -49,7 +48,6 @@ import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.annotations.AnnotationUtilKt; -import org.jetbrains.kotlin.resolve.calls.callResolverUtil.CallResolverUtilKt; import org.jetbrains.kotlin.resolve.constants.ArrayValue; import org.jetbrains.kotlin.resolve.constants.ConstantValue; import org.jetbrains.kotlin.resolve.constants.KClassValue; @@ -579,9 +577,6 @@ public class FunctionCodegen { // equals(Any?), hashCode(), toString() never need bridges if (isMethodOfAny(descriptor)) return; - // If the function doesn't have a physical declaration among super-functions, it's a SAM adapter or alike and doesn't need bridges - if (CallResolverUtilKt.isOrOverridesSynthesized(descriptor)) return; - boolean isSpecial = SpecialBuiltinMembers.getOverriddenBuiltinReflectingJvmDescriptor(descriptor) != null; Set> bridgesToGenerate; diff --git a/compiler/testData/codegen/box/dataClasses/copy/kt12708.kt b/compiler/testData/codegen/box/dataClasses/copy/kt12708.kt new file mode 100644 index 00000000000..f2ac4b4e0af --- /dev/null +++ b/compiler/testData/codegen/box/dataClasses/copy/kt12708.kt @@ -0,0 +1,13 @@ +fun box(): String { + val a: A = B(1) + a.copy(1) + a.component1() + return "OK" +} + +interface A { + fun copy(x: Int): A + fun component1(): Any +} + +data class B(val x: Int) : A diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 7ed563bf1ec..333ba83dc4e 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -4374,6 +4374,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("kt12708.kt") + public void testKt12708() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/dataClasses/copy/kt12708.kt"); + doTest(fileName); + } + @TestMetadata("kt3033.kt") public void testKt3033() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/dataClasses/copy/kt3033.kt");