From a5368e443c090522087e0b6dbec30f48c1dc10f1 Mon Sep 17 00:00:00 2001 From: Alex Chmyr Date: Wed, 22 Jul 2020 23:13:04 +0100 Subject: [PATCH] KT-20421 fixing code generation for the case when "object" extends "class". It should look like: "object: class()". --- .../org/jetbrains/kotlin/nj2k/printing/JKCodeBuilder.kt | 2 +- nj2k/testData/newJ2k/issues/kt-20421.java | 6 ++++++ nj2k/testData/newJ2k/issues/kt-20421.kt | 9 +++++++++ .../NewJavaToKotlinConverterSingleFileTestGenerated.java | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 nj2k/testData/newJ2k/issues/kt-20421.java create mode 100644 nj2k/testData/newJ2k/issues/kt-20421.kt diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCodeBuilder.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCodeBuilder.kt index 33b672d3fd2..2f683750014 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCodeBuilder.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/printing/JKCodeBuilder.kt @@ -226,7 +226,7 @@ internal class JKCodeBuilder(context: NewJ2kConverterContext) { ?.let { it as? JKDelegationConstructorCall } if (delegationCall != null) { printer.par { delegationCall.arguments.accept(this) } - } else if (!superType.isInterface() && primaryConstructor != null) { + } else if (!superType.isInterface() && (primaryConstructor != null || parentClass.isObjectOrCompanionObject)) { printer.print("()") } } diff --git a/nj2k/testData/newJ2k/issues/kt-20421.java b/nj2k/testData/newJ2k/issues/kt-20421.java new file mode 100644 index 00000000000..1cd65e1a871 --- /dev/null +++ b/nj2k/testData/newJ2k/issues/kt-20421.java @@ -0,0 +1,6 @@ +class Base { + static final int F = 0; +} +final class A extends Base { + static final int F1 = 0; +} diff --git a/nj2k/testData/newJ2k/issues/kt-20421.kt b/nj2k/testData/newJ2k/issues/kt-20421.kt new file mode 100644 index 00000000000..b5e01675c53 --- /dev/null +++ b/nj2k/testData/newJ2k/issues/kt-20421.kt @@ -0,0 +1,9 @@ +internal open class Base { + companion object { + const val F = 0 + } +} + +internal object A : Base() { + const val F1 = 0 +} diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java index 34a745cd912..34b0e6c1189 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java @@ -3071,6 +3071,11 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew runTest("nj2k/testData/newJ2k/issues/kt-19943.java"); } + @TestMetadata("kt-20421.java") + public void testKt_20421() throws Exception { + runTest("nj2k/testData/newJ2k/issues/kt-20421.java"); + } + @TestMetadata("kt-21189.java") public void testKt_21189() throws Exception { runTest("nj2k/testData/newJ2k/issues/kt-21189.java");