From d67e99d40acbb98d6a3ea1302c7622f66e1cd4a1 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 22 Oct 2014 18:03:41 +0400 Subject: [PATCH] Fixed KT-6110 J2K converter: do not replace accessors implementing interface with property #KT-6110 --- .../jetbrains/jet/j2k/ClassBodyConverter.kt | 1 + ...otlinConverterSingleFileTestGenerated.java | 6 ++++++ .../AccessorsImplementInterface.java | 20 +++++++++++++++++++ .../AccessorsImplementInterface.kt | 15 ++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.java create mode 100644 j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.kt diff --git a/j2k/src/org/jetbrains/jet/j2k/ClassBodyConverter.kt b/j2k/src/org/jetbrains/jet/j2k/ClassBodyConverter.kt index e744d79bdc2..f681f25246a 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ClassBodyConverter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ClassBodyConverter.kt @@ -145,6 +145,7 @@ class ClassBodyConverter(private val psiClass: PsiClass, val fieldsWithConflict = HashSet() for (method in psiClass.getMethods()) { val info = getAccessorInfo(method) ?: continue + if (method.getHierarchicalMethodSignature().getSuperSignatures().isNotEmpty()) continue // overrides or implements something val map = if (info.kind == AccessorKind.GETTER) fieldToGetterInfo else fieldToSetterInfo val prevInfo = map[info.field] diff --git a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterSingleFileTestGenerated.java b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterSingleFileTestGenerated.java index 605eb227ebe..004c618c4c6 100644 --- a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterSingleFileTestGenerated.java +++ b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterSingleFileTestGenerated.java @@ -1301,6 +1301,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("AccessorsImplementInterface.java") + public void testAccessorsImplementInterface() throws Exception { + String fileName = JetTestUtils.navigationMetadata("j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.java"); + doTest(fileName); + } + public void testAllFilesPresentInDropAccessors() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/tests/testData/fileOrElement/dropAccessors"), Pattern.compile("^(.+)\\.java$"), true); } diff --git a/j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.java b/j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.java new file mode 100644 index 00000000000..ee5e8fd06d4 --- /dev/null +++ b/j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.java @@ -0,0 +1,20 @@ +interface I { + int getX(); + void setX(int x); +} + +class A implements I { + private int x; + + public A(int x) { + this.x = x; + } + + public int getX() { + return x; + } + + public void setX(int x){ + this.x = x; + } +} \ No newline at end of file diff --git a/j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.kt b/j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.kt new file mode 100644 index 00000000000..1b355d19fa7 --- /dev/null +++ b/j2k/tests/testData/fileOrElement/dropAccessors/AccessorsImplementInterface.kt @@ -0,0 +1,15 @@ +trait I { + public fun getX(): Int + public fun setX(x: Int) +} + +class A(private var x: Int) : I { + + override fun getX(): Int { + return x + } + + override fun setX(x: Int) { + this.x = x + } +}