From 287e0909cc1499cf8a1ce46a8dd2bc796f109028 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 12 Apr 2023 21:26:03 +0200 Subject: [PATCH] Kapt+JVM_IR: do not generate super constructor call #KT-57699 Fixed #KT-57939 Fixed --- .../psi2ir/generators/FunctionGenerator.kt | 3 +- .../converter/superConstructorCall.kt | 9 ++++++ .../converter/superConstructorCall.txt | 29 +++++++++++++++++++ ...ileToSourceStubConverterTestGenerated.java | 6 ++++ ...ileToSourceStubConverterTestGenerated.java | 6 ++++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.kt create mode 100644 plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.txt diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt index 94f2b5479e4..473812e35f6 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/FunctionGenerator.kt @@ -244,7 +244,8 @@ internal class FunctionGenerator(declarationGenerator: DeclarationGenerator) : D ) { irConstructor -> if ( primaryConstructorDescriptor.isExpect || - primaryConstructorDescriptor.constructedClass.isEffectivelyExternal() + primaryConstructorDescriptor.constructedClass.isEffectivelyExternal() || + context.configuration.skipBodies ) null else diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.kt b/plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.kt new file mode 100644 index 00000000000..291aa616321 --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.kt @@ -0,0 +1,9 @@ +// CORRECT_ERROR_TYPES + +@file:Suppress("UNRESOLVED_REFERENCE") + +package test + +abstract class A(val s: String) + +class B : A(C.foo()) diff --git a/plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.txt b/plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.txt new file mode 100644 index 00000000000..e8babc9fe82 --- /dev/null +++ b/plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.txt @@ -0,0 +1,29 @@ +package test; + +@kotlin.Metadata() +public abstract class A { + @org.jetbrains.annotations.NotNull() + private final java.lang.String s = null; + + public A(@org.jetbrains.annotations.NotNull() + java.lang.String s) { + super(); + } + + @org.jetbrains.annotations.NotNull() + public final java.lang.String getS() { + return null; + } +} + +//////////////////// + +package test; + +@kotlin.Metadata() +public final class B extends test.A { + + public B() { + super(null); + } +} diff --git a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java index 7779172f456..62d590f8f13 100644 --- a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/ClassFileToSourceStubConverterTestGenerated.java @@ -607,6 +607,12 @@ public class ClassFileToSourceStubConverterTestGenerated extends AbstractClassFi runTest("plugins/kapt3/kapt3-compiler/testData/converter/stripMetadata.kt"); } + @Test + @TestMetadata("superConstructorCall.kt") + public void testSuperConstructorCall() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.kt"); + } + @Test @TestMetadata("suspendArgName.kt") public void testSuspendArgName() throws Exception { diff --git a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java index 66aac5f1634..80558ea7dda 100644 --- a/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java +++ b/plugins/kapt3/kapt3-compiler/tests-gen/org/jetbrains/kotlin/kapt3/test/runners/IrClassFileToSourceStubConverterTestGenerated.java @@ -607,6 +607,12 @@ public class IrClassFileToSourceStubConverterTestGenerated extends AbstractIrCla runTest("plugins/kapt3/kapt3-compiler/testData/converter/stripMetadata.kt"); } + @Test + @TestMetadata("superConstructorCall.kt") + public void testSuperConstructorCall() throws Exception { + runTest("plugins/kapt3/kapt3-compiler/testData/converter/superConstructorCall.kt"); + } + @Test @TestMetadata("suspendArgName.kt") public void testSuspendArgName() throws Exception {