diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassHandler.java index 8840f1fc3c24..7d843351b0ad 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassHandler.java @@ -28,6 +28,10 @@ import org.jetbrains.annotations.Nullable; public interface MoveClassHandler { ExtensionPointName EP_NAME = new ExtensionPointName("com.intellij.refactoring.moveClassHandler"); + void prepareMove(@NotNull PsiClass aClass); + + void finishMoveClass(@NotNull PsiClass aClass); + /** * @return null if it cannot move aClass */ diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java index d0349e634db4..a176951ac42c 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesProcessor.java @@ -15,7 +15,6 @@ */ package com.intellij.refactoring.move.moveClassesOrPackages; -import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; @@ -448,7 +447,7 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { element = newElement; } else if (element instanceof PsiClass) { - ChangeContextUtil.encodeContextInfo(element, true); + MoveClassesOrPackagesUtil.prepareMoveClass((PsiClass)element); final PsiClass newElement = MoveClassesOrPackagesUtil.doMoveClass((PsiClass)element, myMoveDestination.getTargetDirectory(element.getContainingFile())); oldToNewElementsMapping.put(element, newElement); element = newElement; @@ -461,7 +460,7 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor { for (PsiElement element : myElementsToMove) { if (element instanceof PsiClass) { - ChangeContextUtil.decodeContextInfo(element, null, null); + MoveClassesOrPackagesUtil.finishMoveClass((PsiClass)element); } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java index 90494fe0d2f0..931917201cb6 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesUtil.java @@ -207,6 +207,18 @@ public class MoveClassesOrPackagesUtil { } } + public static void prepareMoveClass(PsiClass aClass) { + for (MoveClassHandler handler : MoveClassHandler.EP_NAME.getExtensions()) { + handler.prepareMove(aClass); + } + } + + public static void finishMoveClass(PsiClass aClass) { + for (MoveClassHandler handler : MoveClassHandler.EP_NAME.getExtensions()) { + handler.finishMoveClass(aClass); + } + } + // Does not process non-code usages! public static PsiClass doMoveClass(PsiClass aClass, PsiDirectory moveDestination) throws IncorrectOperationException { PsiClass newClass; diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaClassHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaClassHandler.java index 585544210885..d5153e6e8f46 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaClassHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaClassHandler.java @@ -15,6 +15,7 @@ */ package com.intellij.refactoring.move.moveClassesOrPackages; +import com.intellij.codeInsight.ChangeContextUtil; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.psi.*; @@ -32,6 +33,20 @@ import java.util.Set; public class MoveJavaClassHandler implements MoveClassHandler { private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.move.moveClassesOrPackages.MoveJavaClassHandler"); + @Override + public void finishMoveClass(@NotNull PsiClass aClass) { + if (aClass.getContainingFile() instanceof PsiJavaFile) { + ChangeContextUtil.decodeContextInfo(aClass, null, null); + } + } + + @Override + public void prepareMove(@NotNull PsiClass aClass) { + if (aClass.getContainingFile() instanceof PsiJavaFile) { + ChangeContextUtil.encodeContextInfo(aClass, true); + } + } + public PsiClass doMoveClass(@NotNull final PsiClass aClass, @NotNull PsiDirectory moveDestination) throws IncorrectOperationException { PsiFile file = aClass.getContainingFile(); final PsiPackage newPackage = JavaDirectoryService.getInstance().getPackage(moveDestination); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/move/MoveGroovyClassHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/move/MoveGroovyClassHandler.java index 16458a4934ee..41f9fcc1cd06 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/move/MoveGroovyClassHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/move/MoveGroovyClassHandler.java @@ -16,22 +16,115 @@ package org.jetbrains.plugins.groovy.refactoring.move; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFile; +import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.*; +import com.intellij.psi.impl.source.tree.Factory; +import com.intellij.psi.impl.source.tree.TreeElement; +import com.intellij.psi.javadoc.PsiDocComment; +import com.intellij.psi.search.LocalSearchScope; +import com.intellij.psi.search.searches.ReferencesSearch; +import com.intellij.refactoring.PackageWrapper; +import com.intellij.refactoring.move.moveClassesOrPackages.AutocreatingSingleSourceRootMoveDestination; import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassHandler; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.GroovyFileType; +import org.jetbrains.plugins.groovy.actions.GroovyTemplatesFactory; +import org.jetbrains.plugins.groovy.actions.NewGroovyActionBase; +import org.jetbrains.plugins.groovy.lang.lexer.GroovyTokenTypes; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; +import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase; +import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; +import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.packaging.GrPackageDefinition; +import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement; +import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass; +import org.jetbrains.plugins.groovy.refactoring.GroovyChangeContextUtil; /** * @author Maxim.Medvedev */ public class MoveGroovyClassHandler implements MoveClassHandler { public PsiClass doMoveClass(@NotNull PsiClass aClass, @NotNull PsiDirectory moveDestination) throws IncorrectOperationException { - return MoveGroovyClassUtil.moveGroovyClass(aClass, moveDestination); + if (!aClass.getLanguage().equals(GroovyFileType.GROOVY_LANGUAGE)) return null; + PsiFile file = aClass.getContainingFile(); + if (!(file instanceof GroovyFile)) return null; + + final PsiPackage newPackage = JavaDirectoryService.getInstance().getPackage(moveDestination); + assert newPackage != null; + + PsiClass newClass = null; + + if (aClass instanceof GroovyScriptClass) { + PackageWrapper targetPackage = new PackageWrapper(aClass.getManager(), newPackage.getQualifiedName()); + final VirtualFile sourceRoot = + ProjectRootManager.getInstance(aClass.getProject()).getFileIndex().getSourceRootForFile(moveDestination.getVirtualFile()); + assert sourceRoot != null; + + final AutocreatingSingleSourceRootMoveDestination destination = + new AutocreatingSingleSourceRootMoveDestination(targetPackage, sourceRoot); + new MoveGroovyScriptProcessor(aClass.getProject(), new PsiElement[]{file}, destination, true, true, null).run(); + } + else { + //GroovyChangeContextUtil.encodeContextInfo(aClass); + if (((GroovyFile)file).getClasses().length > 1) { + correctSelfReferences(aClass, newPackage); + String modifiersText = null; + if (newPackage.getQualifiedName().equals(((GroovyFile)file).getPackageName())) { + final GrPackageDefinition packageDefinition = ((GroovyFile)file).getPackageDefinition(); + if (packageDefinition != null) { + final PsiModifierList modifierList = packageDefinition.getModifierList(); + if (modifierList != null) { + modifiersText = modifierList.getText(); + } + } + } + final PsiClass created = ((GroovyFile)GroovyTemplatesFactory + .createFromTemplate(moveDestination, aClass.getName(), aClass.getName() + NewGroovyActionBase.GROOVY_EXTENSION, + "GroovyClass.groovy")).getClasses()[0]; + PsiDocComment docComment = aClass.getDocComment(); + if (docComment != null) { + final PsiDocComment createdDocComment = created.getDocComment(); + if (createdDocComment != null) { + createdDocComment.replace(docComment); + } + else { + created.getContainingFile().addBefore(docComment, created); + } + docComment.delete(); + } + newClass = (PsiClass)created.replace(aClass); + if (modifiersText != null) { + final GrPackageDefinition newPackageDefinition = (GrPackageDefinition)GroovyPsiElementFactory.getInstance(aClass.getProject()) + .createTopElementFromText(modifiersText + " package " + newPackage.getQualifiedName()); + ((GroovyFile)newClass.getContainingFile()).setPackage(newPackageDefinition); + } + correctOldClassReferences(newClass, aClass); + aClass.delete(); + } + else if (!moveDestination.equals(file.getContainingDirectory()) && moveDestination.findFile(file.getName()) != null) { + // moving second of two classes which were in the same file to a different directory (IDEADEV-3089) + correctSelfReferences(aClass, newPackage); + PsiFile newFile = moveDestination.findFile(file.getName()); + TreeElement enter = Factory.createSingleLeafElement(GroovyTokenTypes.mNLS, "\n", 0, 1, null, aClass.getManager()); + newFile.getNode().addChild(enter); + newClass = (GrTypeDefinition)newFile.add(aClass); + aClass.delete(); + } + else if (!moveDestination.equals(file.getContainingDirectory()) && moveDestination.findFile(file.getName()) == null) { + if (!moveDestination.equals(file.getContainingDirectory())) { + aClass.getManager().moveFile(file, moveDestination); + newClass = ((GroovyFile)file).getClasses()[0]; + if (!newPackage.getQualifiedName().equals(((GroovyFile)file).getPackageName())) { + ((PsiClassOwner)file).setPackageName(newPackage.getQualifiedName()); + } + } + } + //if (newClass != null) GroovyChangeContextUtil.decodeContextInfo(newClass, null, null); + } + return newClass; } @Nullable @@ -41,4 +134,43 @@ public class MoveGroovyClassHandler implements MoveClassHandler { return ((GroovyFile)file).getClasses().length > 1 ? clazz.getName() + "." + GroovyFileType.DEFAULT_EXTENSION : file.getName(); } + @Override + public void prepareMove(@NotNull PsiClass aClass) { + if (aClass.getContainingClass() instanceof GroovyFileBase) { + GroovyChangeContextUtil.encodeContextInfo(getRealElement(aClass)); + } + } + + @Override + public void finishMoveClass(@NotNull PsiClass aClass) { + if (aClass.getContainingClass() instanceof GroovyFileBase) { + GroovyChangeContextUtil.decodeContextInfo(getRealElement(aClass), null, null); + } + } + + private static PsiElement getRealElement(PsiClass aClass) { + return aClass instanceof GroovyScriptClass ? aClass.getContainingFile() : aClass; + } + + private static void correctOldClassReferences(final PsiClass newClass, final PsiClass oldClass) { + for (PsiReference reference : ReferencesSearch.search(oldClass, new LocalSearchScope(newClass)).findAll()) { + reference.bindToElement(newClass); + } + } + + private static void correctSelfReferences(final PsiClass aClass, final PsiPackage newContainingPackage) { + final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(aClass.getContainingFile().getContainingDirectory()); + if (aPackage == null) { + return; + } + + for (PsiReference reference : ReferencesSearch.search(aClass, new LocalSearchScope(aClass)).findAll()) { + if (reference instanceof GrCodeReferenceElement) { + final GrCodeReferenceElement qualifier = ((GrCodeReferenceElement)reference).getQualifier(); + if (qualifier != null) { + qualifier.bindToElement(newContainingPackage); + } + } + } + } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/move/MoveGroovyClassUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/move/MoveGroovyClassUtil.java deleted file mode 100644 index a1dae4eca300..000000000000 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/move/MoveGroovyClassUtil.java +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright 2000-2010 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.jetbrains.plugins.groovy.refactoring.move; - -import com.intellij.openapi.roots.ProjectRootManager; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; -import com.intellij.psi.impl.source.tree.Factory; -import com.intellij.psi.impl.source.tree.TreeElement; -import com.intellij.psi.javadoc.PsiDocComment; -import com.intellij.psi.search.LocalSearchScope; -import com.intellij.psi.search.searches.ReferencesSearch; -import com.intellij.refactoring.PackageWrapper; -import com.intellij.refactoring.move.moveClassesOrPackages.AutocreatingSingleSourceRootMoveDestination; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.groovy.GroovyFileType; -import org.jetbrains.plugins.groovy.actions.GroovyTemplatesFactory; -import org.jetbrains.plugins.groovy.actions.NewGroovyActionBase; -import org.jetbrains.plugins.groovy.lang.lexer.GroovyTokenTypes; -import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; -import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; -import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; -import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.packaging.GrPackageDefinition; -import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement; -import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass; -import org.jetbrains.plugins.groovy.refactoring.GroovyChangeContextUtil; - -/** - * @author Maxim.Medvedev - */ -public class MoveGroovyClassUtil { - private MoveGroovyClassUtil() { - } - - @Nullable - public static PsiClass moveGroovyClass(@NotNull PsiClass aClass, @NotNull PsiDirectory moveDestination) { - if (!aClass.getLanguage().equals(GroovyFileType.GROOVY_LANGUAGE)) return null; - PsiFile file = aClass.getContainingFile(); - if (!(file instanceof GroovyFile)) return null; - - final PsiPackage newPackage = JavaDirectoryService.getInstance().getPackage(moveDestination); - assert newPackage != null; - - PsiClass newClass = null; - - if (aClass instanceof GroovyScriptClass) { - PackageWrapper targetPackage = new PackageWrapper(aClass.getManager(), newPackage.getQualifiedName()); - final VirtualFile sourceRoot = - ProjectRootManager.getInstance(aClass.getProject()).getFileIndex().getSourceRootForFile(moveDestination.getVirtualFile()); - assert sourceRoot != null; - - final AutocreatingSingleSourceRootMoveDestination destination = - new AutocreatingSingleSourceRootMoveDestination(targetPackage, sourceRoot); - new MoveGroovyScriptProcessor(aClass.getProject(), new PsiElement[]{file}, destination, true, true, null).run(); - } - else { - GroovyChangeContextUtil.encodeContextInfo(aClass); - if (((GroovyFile)file).getClasses().length > 1) { - correctSelfReferences(aClass, newPackage); - String modifiersText = null; - if (newPackage.getQualifiedName().equals(((GroovyFile)file).getPackageName())) { - final GrPackageDefinition packageDefinition = ((GroovyFile)file).getPackageDefinition(); - if (packageDefinition != null) { - final PsiModifierList modifierList = packageDefinition.getModifierList(); - if (modifierList != null) { - modifiersText = modifierList.getText(); - } - } - } - final PsiClass created = ((GroovyFile)GroovyTemplatesFactory - .createFromTemplate(moveDestination, aClass.getName(), aClass.getName() + NewGroovyActionBase.GROOVY_EXTENSION, - "GroovyClass.groovy")).getClasses()[0]; - PsiDocComment docComment = aClass.getDocComment(); - if (docComment != null) { - final PsiDocComment createdDocComment = created.getDocComment(); - if (createdDocComment != null) { - createdDocComment.replace(docComment); - } - else { - created.getContainingFile().addBefore(docComment, created); - } - docComment.delete(); - } - newClass = (PsiClass)created.replace(aClass); - if (modifiersText != null) { - final GrPackageDefinition newPackageDefinition = (GrPackageDefinition)GroovyPsiElementFactory.getInstance(aClass.getProject()) - .createTopElementFromText(modifiersText + " package " + newPackage.getQualifiedName()); - ((GroovyFile)newClass.getContainingFile()).setPackage(newPackageDefinition); - } - correctOldClassReferences(newClass, aClass); - aClass.delete(); - } - else if (!moveDestination.equals(file.getContainingDirectory()) && moveDestination.findFile(file.getName()) != null) { - // moving second of two classes which were in the same file to a different directory (IDEADEV-3089) - correctSelfReferences(aClass, newPackage); - PsiFile newFile = moveDestination.findFile(file.getName()); - TreeElement enter = Factory.createSingleLeafElement(GroovyTokenTypes.mNLS, "\n", 0, 1, null, aClass.getManager()); - newFile.getNode().addChild(enter); - newClass = (GrTypeDefinition)newFile.add(aClass); - aClass.delete(); - } - else if (!moveDestination.equals(file.getContainingDirectory()) && moveDestination.findFile(file.getName()) == null) { - if (!moveDestination.equals(file.getContainingDirectory())) { - aClass.getManager().moveFile(file, moveDestination); - newClass = ((GroovyFile)file).getClasses()[0]; - if (!newPackage.getQualifiedName().equals(((GroovyFile)file).getPackageName())) { - ((PsiClassOwner)file).setPackageName(newPackage.getQualifiedName()); - } - } - } - if (newClass != null) GroovyChangeContextUtil.decodeContextInfo(newClass, null, null); - } - return newClass; - } - - private static void correctOldClassReferences(final PsiClass newClass, final PsiClass oldClass) { - for (PsiReference reference : ReferencesSearch.search(oldClass, new LocalSearchScope(newClass)).findAll()) { - reference.bindToElement(newClass); - } - } - - private static void correctSelfReferences(final PsiClass aClass, final PsiPackage newContainingPackage) { - final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(aClass.getContainingFile().getContainingDirectory()); - if (aPackage == null) { - return; - } - - for (PsiReference reference : ReferencesSearch.search(aClass, new LocalSearchScope(aClass)).findAll()) { - if (reference instanceof GrCodeReferenceElement) { - final GrCodeReferenceElement qualifier = ((GrCodeReferenceElement)reference).getQualifier(); - if (qualifier != null) { - qualifier.bindToElement(newContainingPackage); - } - } - } - } -} diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveClassTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveClassTest.java index 1ae43ed356aa..da4b71bc46d4 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveClassTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/move/GroovyMoveClassTest.java @@ -122,7 +122,11 @@ public class GroovyMoveClassTest extends LightCodeInsightFixtureTestCase { doTest("script", new String[]{"pack1.Xx"}, "pack2"); } - private void performAction(String[] classNames, String newPackageName) throws Exception { + public void testTwoClasses() { + doTest("twoClasses", new String[] {"p1.C1", "p1.C2"}, "p2"); + } + + private void performAction(String[] classNames, String newPackageName) { final PsiClass[] classes = new PsiClass[classNames.length]; for (int i = 0; i < classes.length; i++) { String className = classNames[i]; @@ -153,7 +157,7 @@ public class GroovyMoveClassTest extends LightCodeInsightFixtureTestCase { FileDocumentManager.getInstance().saveAllDocuments(); } - private void doTest(String testName, String[] classNames, String newPackageName) throws Exception { + private void doTest(String testName, String[] classNames, String newPackageName) { final VirtualFile actualRoot = myFixture.copyDirectoryToProject(testName + "/before", ""); performAction(classNames, newPackageName); diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p1/dummy.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p1/dummy.groovy new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/C1.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/C1.groovy new file mode 100644 index 000000000000..88877aa953a3 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/C1.groovy @@ -0,0 +1,7 @@ +package p2 + +class C1 { + def foo(){ + new C2() + } +} \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/C2.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/C2.groovy new file mode 100644 index 000000000000..ac529498ef43 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/C2.groovy @@ -0,0 +1,7 @@ +package p2 + +class C2 { + def foo() { + new C1() + } +} \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/dummy.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/after/p2/dummy.groovy new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/C1.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/C1.groovy new file mode 100644 index 000000000000..3c3e9e6de8cd --- /dev/null +++ b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/C1.groovy @@ -0,0 +1,7 @@ +package p1 + +class C1 { + def foo(){ + new C2() + } +} \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/C2.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/C2.groovy new file mode 100644 index 000000000000..d478164edd53 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/C2.groovy @@ -0,0 +1,7 @@ +package p1 + +class C2 { + def foo() { + new C1() + } +} \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/dummy.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p1/dummy.groovy new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p2/dummy.groovy b/plugins/groovy/testdata/refactoring/move/moveClass/twoClasses/before/p2/dummy.groovy new file mode 100644 index 000000000000..e69de29bb2d1