diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java index d8c059410be..2515c5ba9da 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java @@ -648,6 +648,8 @@ class CodegenAnnotatingVisitor extends KtVisitorVoid { @Override public void visitConstructorDelegationCall(@NotNull KtConstructorDelegationCall call) { withinUninitializedClass(call, () -> super.visitConstructorDelegationCall(call)); + + checkSamCall(call); } private void withinUninitializedClass(@NotNull KtElement element, @NotNull Runnable operation) { diff --git a/compiler/testData/codegen/boxAgainstJava/sam/adapters/superInSecondaryConstructor.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/superInSecondaryConstructor.kt new file mode 100644 index 00000000000..82f991af8bb --- /dev/null +++ b/compiler/testData/codegen/boxAgainstJava/sam/adapters/superInSecondaryConstructor.kt @@ -0,0 +1,24 @@ +// FILE: test.kt +class Test : Base { + constructor(f: () -> String) : super(f) +} + +fun box() = Test({ "OK" }).get() + +// FILE: Supplier.java +public interface Supplier { + T get(); +} + +// FILE: Base.java +public class Base { + private final Supplier supplier; + + public Base(Supplier supplier) { + this.supplier = supplier; + } + + public String get() { + return supplier.get(); + } +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java index fa034000181..9ed28e3ad37 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxAgainstJavaCodegenTestGenerated.java @@ -787,6 +787,12 @@ public class BlackBoxAgainstJavaCodegenTestGenerated extends AbstractBlackBoxAga doTest(fileName); } + @TestMetadata("superInSecondaryConstructor.kt") + public void testSuperInSecondaryConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxAgainstJava/sam/adapters/superInSecondaryConstructor.kt"); + doTest(fileName); + } + @TestMetadata("superconstructor.kt") public void testSuperconstructor() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxAgainstJava/sam/adapters/superconstructor.kt");