diff --git a/idea/testData/refactoring/rename/renameKotlinClassWithFile/after/ClassAfter.kt b/idea/testData/refactoring/rename/renameKotlinClassWithFile/after/ClassAfter.kt new file mode 100644 index 00000000000..6cc7ca9df1b --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinClassWithFile/after/ClassAfter.kt @@ -0,0 +1,3 @@ +package testing + +class ClassAfter \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinClassWithFile/before/ClassBefore.kt b/idea/testData/refactoring/rename/renameKotlinClassWithFile/before/ClassBefore.kt new file mode 100644 index 00000000000..55188c9e79d --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinClassWithFile/before/ClassBefore.kt @@ -0,0 +1,3 @@ +package testing + +class ClassBefore \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinClassWithFile/javaClassWrapper.test b/idea/testData/refactoring/rename/renameKotlinClassWithFile/javaClassWrapper.test new file mode 100644 index 00000000000..1f9222a2ba8 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinClassWithFile/javaClassWrapper.test @@ -0,0 +1 @@ +// RENAME: JAVA_CLASS->testing.ClassBefore->ClassAfter \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinClassWithFile/kotlinClass.test b/idea/testData/refactoring/rename/renameKotlinClassWithFile/kotlinClass.test new file mode 100644 index 00000000000..454692dfe6b --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinClassWithFile/kotlinClass.test @@ -0,0 +1,2 @@ +// RENAME: KOTLIN_CLASS->testing.ClassBefore->ClassAfter +// FILE: ClassBefore.kt \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.java index 1a3e8727db4..d0510a076d7 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/AbstractRenameTest.java @@ -31,6 +31,7 @@ import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.util.Function; import junit.framework.Assert; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.InTextDirectivesUtils; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; @@ -70,6 +71,8 @@ public abstract class AbstractRenameTest extends MultiFileTestCase { String hintDirective = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// HINT:"); + String mainFile = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// FILE:"); + String renameTypeStr = strings[0]; RenameType type = RenameType.valueOf(renameTypeStr); @@ -84,13 +87,13 @@ public abstract class AbstractRenameTest extends MultiFileTestCase { renameJavaMethodTest(fqNameUnsafe.asString(), strings[2], strings[3]); break; case KOTLIN_CLASS: - renameKotlinClassTest(fqNameUnsafe.toSafe(), strings[2]); + renameKotlinClassTest(fqNameUnsafe.toSafe(), strings[2], mainFile); break; case KOTLIN_FUNCTION: - renameKotlinFunctionTest(fqNameUnsafe.parent().toSafe(), fqNameUnsafe.shortName().asString(), strings[2]); + renameKotlinFunctionTest(fqNameUnsafe.parent().toSafe(), fqNameUnsafe.shortName().asString(), strings[2], mainFile); break; case KOTLIN_PROPERTY: - renameKotlinPropertyTest(fqNameUnsafe.parent().toSafe(), fqNameUnsafe.shortName().asString(), strings[2]); + renameKotlinPropertyTest(fqNameUnsafe.parent().toSafe(), fqNameUnsafe.shortName().asString(), strings[2], mainFile); break; } @@ -153,7 +156,7 @@ public abstract class AbstractRenameTest extends MultiFileTestCase { }); } - private void renameKotlinFunctionTest(final FqName qClassName, final String oldMethodName, String newMethodName) throws Exception { + private void renameKotlinFunctionTest(final FqName qClassName, final String oldMethodName, String newMethodName, String mainFile) throws Exception { doTestWithKotlinRename(new Function() { @Override public PsiElement fun(PsiFile file) { @@ -166,10 +169,10 @@ public abstract class AbstractRenameTest extends MultiFileTestCase { FunctionDescriptor methodDescriptor = scope.getFunctions(Name.identifier(oldMethodName)).iterator().next(); return BindingContextUtils.callableDescriptorToDeclaration(bindingContext, methodDescriptor); } - }, newMethodName); + }, newMethodName, mainFile); } - private void renameKotlinPropertyTest(final FqName qClassName, final String oldPropertyName, String newPropertyName) throws Exception { + private void renameKotlinPropertyTest(final FqName qClassName, final String oldPropertyName, String newPropertyName, String mainFile) throws Exception { doTestWithKotlinRename(new Function() { @Override public PsiElement fun(PsiFile file) { @@ -181,10 +184,10 @@ public abstract class AbstractRenameTest extends MultiFileTestCase { VariableDescriptor propertyName = scope.getProperties(Name.identifier(oldPropertyName)).iterator().next(); return BindingContextUtils.descriptorToDeclaration(bindingContext, propertyName); } - }, newPropertyName); + }, newPropertyName, mainFile); } - private void renameKotlinClassTest(@NonNls final FqName qClassName, @NonNls String newName) throws Exception { + private void renameKotlinClassTest(@NonNls final FqName qClassName, @NonNls String newName, String mainFile) throws Exception { doTestWithKotlinRename(new Function() { @Override public PsiElement fun(PsiFile file) { @@ -196,14 +199,18 @@ public abstract class AbstractRenameTest extends MultiFileTestCase { return BindingContextUtils.classDescriptorToDeclaration(bindingContext, classDescriptor); } - }, newName); + }, newName, mainFile); } - private void doTestWithKotlinRename(@NonNls final Function elementToRenameCallback, final @NonNls String newName) throws Exception { + private void doTestWithKotlinRename( + @NonNls final Function elementToRenameCallback, + @NonNls final String newName, + @Nullable final String mainFile + ) throws Exception { doTest(new MultiFileTestCase.PerformAction() { @Override public void performAction(VirtualFile rootDir, VirtualFile rootAfter) throws Exception { - VirtualFile child = rootDir.findChild(getTestDirName(false) + ".kt"); + VirtualFile child = rootDir.findChild(mainFile == null ? (getTestDirName(false) + ".kt") : mainFile); assertNotNull(child); Document document = FileDocumentManager.getInstance().getDocument(child); diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/RenameTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/RenameTestGenerated.java index 8105502c2a5..f0cc8186f6e 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/RenameTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/rename/RenameTestGenerated.java @@ -33,9 +33,7 @@ import org.jetbrains.jet.plugin.refactoring.rename.AbstractRenameTest; @TestMetadata("idea/testData/refactoring/rename") public class RenameTestGenerated extends AbstractRenameTest { public void testAllFilesPresentInRename() throws Exception { - JetTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", - new File("idea/testData/refactoring/rename"), - Pattern.compile("^(.+)\\.test$")); + JetTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/refactoring/rename"), Pattern.compile("^(.+)\\.test$")); } @TestMetadata("renameJavaClass/renameJavaClass.test") @@ -78,6 +76,16 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest("idea/testData/refactoring/rename/renameKotlinClassConstructor/renameKotlinConstructor.test"); } + @TestMetadata("renameKotlinClassWithFile/javaClassWrapper.test") + public void testRenameKotlinClassWithFile_JavaClassWrapper() throws Exception { + doTest("idea/testData/refactoring/rename/renameKotlinClassWithFile/javaClassWrapper.test"); + } + + @TestMetadata("renameKotlinClassWithFile/kotlinClass.test") + public void testRenameKotlinClassWithFile_KotlinClass() throws Exception { + doTest("idea/testData/refactoring/rename/renameKotlinClassWithFile/kotlinClass.test"); + } + @TestMetadata("renameKotlinMethod/javaWrapperForKotlinMethod.test") public void testRenameKotlinMethod_JavaWrapperForKotlinMethod() throws Exception { doTest("idea/testData/refactoring/rename/renameKotlinMethod/javaWrapperForKotlinMethod.test");