From b51f5c5bd99c4048db18a040c631dbab88cd71d1 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Mon, 17 Oct 2016 17:56:20 +0300 Subject: [PATCH] Fix for KT-14248 J2K: Invalid constructor formatting after conversion Caused by `\n\n long mLong = 0;` leading line breaks --- j2k/src/org/jetbrains/kotlin/j2k/Converter.kt | 6 +++--- j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt | 2 +- j2k/testData/fileOrElement/issues/kt-14248.java | 15 +++++++++++++++ j2k/testData/fileOrElement/issues/kt-14248.kt | 2 ++ ...aToKotlinConverterForWebDemoTestGenerated.java | 6 ++++++ ...aToKotlinConverterSingleFileTestGenerated.java | 6 ++++++ 6 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 j2k/testData/fileOrElement/issues/kt-14248.java create mode 100644 j2k/testData/fileOrElement/issues/kt-14248.kt diff --git a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt index 5bcb5c7689f..f6c2b2268f2 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt @@ -660,7 +660,7 @@ class Converter private constructor( result = Identifier.toKotlin(codeRefElement.referenceName!!) + "." + result qualifier = codeRefElement.qualifier } - return ReferenceElement(Identifier.withNoPrototype(result), typeArgs).assignPrototype(element) + return ReferenceElement(Identifier.withNoPrototype(result), typeArgs).assignPrototype(element, CommentsAndSpacesInheritance.NO_SPACES) } else { if (!hasExternalQualifier) { @@ -668,12 +668,12 @@ class Converter private constructor( if (targetClass != null) { val identifier = constructNestedClassReferenceIdentifier(targetClass, specialContext ?: element) if (identifier != null) { - return ReferenceElement(identifier, typeArgs).assignPrototype(element) + return ReferenceElement(identifier, typeArgs).assignPrototype(element, CommentsAndSpacesInheritance.NO_SPACES) } } } - return ReferenceElement(Identifier.withNoPrototype(element.referenceName!!), typeArgs).assignPrototype(element) + return ReferenceElement(Identifier.withNoPrototype(element.referenceName!!), typeArgs).assignPrototype(element, CommentsAndSpacesInheritance.NO_SPACES) } } diff --git a/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt b/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt index d2213d28ec4..be00ea14260 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt @@ -65,7 +65,7 @@ class TypeConverter(val converter: Converter) { else { convertType(variable.type, variableNullability(variable), variableMutability(variable)) } - return result.assignPrototype(variable.typeElement) + return result.assignPrototype(variable.typeElement, CommentsAndSpacesInheritance.NO_SPACES) } fun convertMethodReturnType(method: PsiMethod): Type diff --git a/j2k/testData/fileOrElement/issues/kt-14248.java b/j2k/testData/fileOrElement/issues/kt-14248.java new file mode 100644 index 00000000000..d8e031cd261 --- /dev/null +++ b/j2k/testData/fileOrElement/issues/kt-14248.java @@ -0,0 +1,15 @@ +public class AppInfo { + + long mLastUpdateTime; + + String mName; + + String mIcon; + + public AppInfo(String name, String icon, long lastUpdateTime) { + mName = name; + mIcon = icon; + mLastUpdateTime = lastUpdateTime; + } +} + diff --git a/j2k/testData/fileOrElement/issues/kt-14248.kt b/j2k/testData/fileOrElement/issues/kt-14248.kt new file mode 100644 index 00000000000..aee60d638d5 --- /dev/null +++ b/j2k/testData/fileOrElement/issues/kt-14248.kt @@ -0,0 +1,2 @@ +class AppInfo(internal var mName: String, internal var mIcon: String, internal var mLastUpdateTime: Long) + diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java index d34e2398822..78ab0401923 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterForWebDemoTestGenerated.java @@ -2860,6 +2860,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("kt-14248.java") + public void testKt_14248() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/issues/kt-14248.java"); + doTest(fileName); + } + @TestMetadata("kt-5294.java") public void testKt_5294() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/issues/kt-5294.java"); diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java index 7a561847cd7..19a057c0c1f 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/JavaToKotlinConverterSingleFileTestGenerated.java @@ -2860,6 +2860,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("kt-14248.java") + public void testKt_14248() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/issues/kt-14248.java"); + doTest(fileName); + } + @TestMetadata("kt-5294.java") public void testKt_5294() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/fileOrElement/issues/kt-5294.java");