From c75a18291cd029d58bcc3aaf709d047fc6450399 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 30 Jun 2015 13:55:32 +0300 Subject: [PATCH] KT-7918 J2K: don't generate jvmOverloads on private declarations #KT-7918 Fixed --- j2k/src/org/jetbrains/kotlin/j2k/Converter.kt | 2 +- .../fileOrElement/constructors/privateConstructors.kt | 2 +- j2k/testData/fileOrElement/overloads/Private.java | 10 ++++++++++ j2k/testData/fileOrElement/overloads/Private.kt | 6 ++++++ .../JavaToKotlinConverterForWebDemoTestGenerated.java | 6 ++++++ .../JavaToKotlinConverterSingleFileTestGenerated.java | 6 ++++++ 6 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 j2k/testData/fileOrElement/overloads/Private.java create mode 100644 j2k/testData/fileOrElement/overloads/Private.kt diff --git a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt index 1d4206866c7..34c3cec106f 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt @@ -427,7 +427,7 @@ class Converter private constructor( if (function == null) return null - if (function.parameterList.parameters.any { it.defaultValue != null }) { + if (function.parameterList.parameters.any { it.defaultValue != null } && !function.modifiers.isPrivate) { function.annotations += Annotations( listOf(Annotation(Identifier("jvmOverloads").assignNoPrototype(), listOf(), diff --git a/j2k/testData/fileOrElement/constructors/privateConstructors.kt b/j2k/testData/fileOrElement/constructors/privateConstructors.kt index c3503175dd8..ab666511241 100644 --- a/j2k/testData/fileOrElement/constructors/privateConstructors.kt +++ b/j2k/testData/fileOrElement/constructors/privateConstructors.kt @@ -1,4 +1,4 @@ -class C jvmOverloads private constructor(arg1: Int, arg2: Int, arg3: Int = 0) { +class C private constructor(arg1: Int, arg2: Int, arg3: Int = 0) { public constructor(arg1: Int) : this(arg1, 0, 0) { } diff --git a/j2k/testData/fileOrElement/overloads/Private.java b/j2k/testData/fileOrElement/overloads/Private.java new file mode 100644 index 00000000000..f064f32fe48 --- /dev/null +++ b/j2k/testData/fileOrElement/overloads/Private.java @@ -0,0 +1,10 @@ +class A { + private int bar(String s) { + System.out.println("s = " + s); + return 0; + } + + private int bar() { + return bar(null); + } +} \ No newline at end of file diff --git a/j2k/testData/fileOrElement/overloads/Private.kt b/j2k/testData/fileOrElement/overloads/Private.kt new file mode 100644 index 00000000000..c4c1b0b9554 --- /dev/null +++ b/j2k/testData/fileOrElement/overloads/Private.kt @@ -0,0 +1,6 @@ +class A { + private fun bar(s: String? = null): Int { + println("s = " + s!!) + return 0 + } +} diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java index a12a7e4c0ad..3b2bfe64fb9 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java @@ -3520,6 +3520,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("Private.java") + public void testPrivate() throws Exception { + String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/overloads/Private.java"); + doTest(fileName); + } + @TestMetadata("Simple.java") public void testSimple() throws Exception { String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/overloads/Simple.java"); diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java index 8c1c28e6f50..2112ee1469e 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java @@ -3520,6 +3520,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("Private.java") + public void testPrivate() throws Exception { + String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/overloads/Private.java"); + doTest(fileName); + } + @TestMetadata("Simple.java") public void testSimple() throws Exception { String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/overloads/Simple.java");