diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 386199ad579..8bf477677cd 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -588,7 +588,7 @@ fun main(args: Array) { } testClass(javaClass()) { - model("copyPaste/conversion", extension = "java") + model("copyPaste/conversion", pattern = """^([^\.]+)\.java$""") } testClass(javaClass()) { diff --git a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt b/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt index 67f91ea4ec2..f3070f0131f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt +++ b/idea/src/org/jetbrains/kotlin/idea/conversion/copy/DataForConversion.kt @@ -144,8 +144,7 @@ data class DataForConversion private( // element's text can be removed from file's text keeping parsing the same private fun canDropElementFromText(element: PsiElement): Boolean { return when (element) { - is PsiWhiteSpace, is PsiComment, is PsiModifierList, - is PsiAnnotation, is PsiPackageStatement, is PsiImportList, is PsiImportStatementBase -> true + is PsiWhiteSpace, is PsiComment, is PsiModifierList, is PsiAnnotation -> true is PsiJavaToken -> { when (element.getTokenType()) { diff --git a/idea/testData/copyPaste/conversion/ClassWithOverrides.dependency.java b/idea/testData/copyPaste/conversion/ClassWithOverrides.dependency.java new file mode 100644 index 00000000000..c8a30dca606 --- /dev/null +++ b/idea/testData/copyPaste/conversion/ClassWithOverrides.dependency.java @@ -0,0 +1,8 @@ +package javaPack + +import org.jetbrains.annotations.NotNull; + +public interface I { + @NotNull + String foo(); +} \ No newline at end of file diff --git a/idea/testData/copyPaste/conversion/ClassWithOverrides.expected.kt b/idea/testData/copyPaste/conversion/ClassWithOverrides.expected.kt new file mode 100644 index 00000000000..b5e0d956703 --- /dev/null +++ b/idea/testData/copyPaste/conversion/ClassWithOverrides.expected.kt @@ -0,0 +1,9 @@ +package to + +import javaPack.I + +public class C : I { + override fun foo(): String { + return "" + } +} diff --git a/idea/testData/copyPaste/conversion/ClassWithOverrides.java b/idea/testData/copyPaste/conversion/ClassWithOverrides.java new file mode 100644 index 00000000000..a5459852ab0 --- /dev/null +++ b/idea/testData/copyPaste/conversion/ClassWithOverrides.java @@ -0,0 +1,11 @@ +package javaPack + +import org.jetbrains.annotations.NotNull; + +public class C implements I { + @NotNull + @Override + public String foo() { + return ""; + } +} \ No newline at end of file diff --git a/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.expected.kt b/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.expected.kt index 298f905764b..14b3f3a3e90 100644 --- a/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.expected.kt +++ b/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.expected.kt @@ -5,5 +5,3 @@ public object JavaClass { println("Hello, world!") } } - -fun main(args: Array) = JavaClass.main(args) diff --git a/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.java b/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.java index e8a90ab9dca..bb7d6d10a86 100644 --- a/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.java +++ b/idea/testData/copyPaste/conversion/FileWithNoPackageStatement.java @@ -1,4 +1,3 @@ -// this test should cause the whole file to be converted at once (with non-selected text stripped) and the main function to be generated package helloWorld; // sample class diff --git a/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/AbstractJavaToKotlinCopyPasteConversionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/AbstractJavaToKotlinCopyPasteConversionTest.kt index 6989a31e2ce..5836c97b67c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/AbstractJavaToKotlinCopyPasteConversionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/AbstractJavaToKotlinCopyPasteConversionTest.kt @@ -58,6 +58,7 @@ public abstract class AbstractJavaToKotlinCopyPasteConversionTest : AbstractCopy myFixture.performEditorAction(IdeActions.ACTION_COPY) configureByDependencyIfExists(testName + ".dependency.kt") + configureByDependencyIfExists(testName + ".dependency.java") configureTargetFile(testName + ".to.kt") diff --git a/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/JavaToKotlinCopyPasteConversionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/JavaToKotlinCopyPasteConversionTestGenerated.java index 618f174b2f2..78ed2d9f22a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/JavaToKotlinCopyPasteConversionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/conversion/copy/JavaToKotlinCopyPasteConversionTestGenerated.java @@ -62,7 +62,7 @@ public class JavaToKotlinCopyPasteConversionTestGenerated extends AbstractJavaTo } public void testAllFilesPresentInConversion() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/copyPaste/conversion"), Pattern.compile("^(.+)\\.java$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/copyPaste/conversion"), Pattern.compile("^([^\\.]+)\\.java$"), true); } @TestMetadata("Arithmetic.java") @@ -77,6 +77,12 @@ public class JavaToKotlinCopyPasteConversionTestGenerated extends AbstractJavaTo doTest(fileName); } + @TestMetadata("ClassWithOverrides.java") + public void testClassWithOverrides() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/copyPaste/conversion/ClassWithOverrides.java"); + doTest(fileName); + } + @TestMetadata("Constructor.java") public void testConstructor() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/copyPaste/conversion/Constructor.java");