diff --git a/annotations/com/intellij/refactoring/move/moveFilesOrDirectories/annotations.xml b/annotations/com/intellij/refactoring/move/moveFilesOrDirectories/annotations.xml index 680dfefb336..605fb44fd8b 100644 --- a/annotations/com/intellij/refactoring/move/moveFilesOrDirectories/annotations.xml +++ b/annotations/com/intellij/refactoring/move/moveFilesOrDirectories/annotations.xml @@ -21,4 +21,8 @@ + + + \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinShortenReferencesRefactoringHelper.kt b/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinShortenReferencesRefactoringHelper.kt index 5336fc971bd..0714a5cbf1c 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinShortenReferencesRefactoringHelper.kt +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinShortenReferencesRefactoringHelper.kt @@ -29,6 +29,9 @@ import com.intellij.psi.SmartPointerManager import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetQualifiedExpression import org.jetbrains.jet.lang.psi.JetUserType +import org.jetbrains.jet.lang.psi.JetFile +import org.jetbrains.jet.lang.psi.UserDataProperty +import org.jetbrains.jet.lang.psi.NotNullableUserDataProperty public class KotlinShortenReferencesRefactoringHelper: RefactoringHelper { private val LOG = Logger.getInstance(javaClass().getCanonicalName()) @@ -36,10 +39,10 @@ public class KotlinShortenReferencesRefactoringHelper: RefactoringHelper { override fun prepareOperation(usages: Array?): Any? { if (usages != null && usages.isNotEmpty()) { val project = usages[0].getProject() - val elementsToShorten = project.getElementsToShorten(false) - if (elementsToShorten != null && !elementsToShorten.isEmpty()) { + val elementsToShorten = project.elementsToShorten + if (project.ensureElementsToShortenIsEmptyBeforeRefactoring && elementsToShorten != null && !elementsToShorten.isEmpty()) { LOG.warn("Waiting set for reference shortening is not empty") - project.clearElementsToShorten() + project.elementsToShorten = null } } return null @@ -47,32 +50,36 @@ public class KotlinShortenReferencesRefactoringHelper: RefactoringHelper { override fun performOperation(project: Project, operationData: Any?) { ApplicationManager.getApplication()!!.runWriteAction { - project.getElementsToShorten(false)?.let { bindRequests -> - project.clearElementsToShorten() + project.elementsToShorten?.let { bindRequests -> + project.elementsToShorten = null ShortenReferences.process(bindRequests.map() { it.getElement() }.filterNotNull()) } } } } -private val ELEMENTS_TO_SHORTEN_KEY = Key.create>>("ELEMENTS_TO_SHORTEN_KEY") +private var Project.elementsToShorten: MutableSet>? + by UserDataProperty(Key.create("ELEMENTS_TO_SHORTEN_KEY")) -private fun Project.getElementsToShorten(createIfNeeded: Boolean): MutableSet>? { - var elementsToShorten = getUserData(ELEMENTS_TO_SHORTEN_KEY) - if (createIfNeeded && elementsToShorten == null) { - elementsToShorten = HashSet() - putUserData(ELEMENTS_TO_SHORTEN_KEY, elementsToShorten) +/* + * When one refactoring invokes another this value must be set to false so that shortening wait-set is not cleared + * and previously collected references are processed correctly. Afterwards it must be reset to original value + */ +public var Project.ensureElementsToShortenIsEmptyBeforeRefactoring: Boolean + by NotNullableUserDataProperty(Key.create("ENSURE_ELEMENTS_TO_SHORTEN_IS_EMPTY"), true) + +private fun Project.getOrCreateElementsToShorten(): MutableSet> { + var elements = elementsToShorten + if (elements == null) { + elements = HashSet() + elementsToShorten = elements + } + + return elements!! } - return elementsToShorten -} - -private fun Project.clearElementsToShorten() { - putUserData(ELEMENTS_TO_SHORTEN_KEY, null) -} - public fun JetElement.addToShorteningWaitSet() { assert (ApplicationManager.getApplication()!!.isWriteAccessAllowed(), "Write access needed") val project = getProject() - project.getElementsToShorten(true)!!.add(SmartPointerManager.getInstance(project).createSmartPsiElementPointer(this)) + project.getOrCreateElementsToShorten().add(SmartPointerManager.getInstance(project).createSmartPsiElementPointer(this)) } diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt index 31593e32b71..3e2e3ddc928 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveFilesOrDirectories/MoveKotlinFileHandler.kt @@ -24,59 +24,27 @@ import com.intellij.usageView.UsageInfo import com.intellij.openapi.roots.JavaProjectRootsUtil import com.intellij.psi.PsiCompiledElement import org.jetbrains.jet.lang.psi.JetFile -import java.util.ArrayList -import com.intellij.psi.search.searches.ReferencesSearch -import com.intellij.refactoring.util.MoveRenameUsageInfo import org.jetbrains.jet.lang.psi.JetNamedDeclaration -import com.intellij.openapi.util.text.StringUtil -import com.intellij.psi.PsiReference import org.jetbrains.jet.lang.resolve.name.FqName import org.jetbrains.jet.plugin.references.JetSimpleNameReference -import com.intellij.openapi.util.Key -import org.jetbrains.jet.plugin.refactoring.getAndRemoveCopyableUserData import org.jetbrains.jet.lang.psi.psiUtil.getPackage -import org.jetbrains.jet.plugin.references.JetReference -import org.jetbrains.jet.asJava.toLightElements -import org.jetbrains.jet.lang.psi.JetDeclaration -import com.intellij.openapi.util.TextRange -import com.intellij.openapi.diagnostic.Logger -import org.jetbrains.jet.lang.psi.JetClassOrObject -import org.jetbrains.jet.plugin.search.usagesSearch.descriptor -import org.jetbrains.jet.lang.resolve.DescriptorUtils -import com.intellij.refactoring.util.TextOccurrencesUtil -import java.util.Collections import org.jetbrains.jet.plugin.refactoring.move.PackageNameInfo -import org.jetbrains.jet.plugin.search.projectScope -import org.jetbrains.jet.plugin.search.fileScope -import org.jetbrains.jet.plugin.search.minus import org.jetbrains.jet.plugin.refactoring.move.getInternalReferencesToUpdateOnPackageNameChange import org.jetbrains.jet.plugin.refactoring.move.postProcessMoveUsages -import org.jetbrains.jet.plugin.codeInsight.addToShorteningWaitSet +import org.jetbrains.jet.plugin.refactoring.move.moveTopLevelDeclarations.MoveKotlinTopLevelDeclarationsProcessor +import org.jetbrains.jet.plugin.refactoring.move.moveTopLevelDeclarations.MoveKotlinTopLevelDeclarationsOptions +import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil +import org.jetbrains.jet.plugin.refactoring.move.moveTopLevelDeclarations.DeferredJetFileKotlinMoveTarget +import org.jetbrains.jet.plugin.refactoring.move.moveTopLevelDeclarations.Mover +import org.jetbrains.jet.plugin.codeInsight.ensureElementsToShortenIsEmptyBeforeRefactoring public class MoveKotlinFileHandler : MoveFileHandler() { - class object { - private val LOG = Logger.getInstance(javaClass()) + private var packageNameInfo: PackageNameInfo? = null + private var declarationMoveProcessor: MoveKotlinTopLevelDeclarationsProcessor? = null - class MoveRenameKotlinUsageInfo( - reference: JetSimpleNameReference, - range: TextRange, - referencedElement: JetDeclaration, - val newFqName: FqName - ) : MoveRenameUsageInfo(reference.getElement(), reference, range.getStartOffset(), range.getEndOffset(), referencedElement, false) { - val jetReference: JetSimpleNameReference get() = getReference() as JetSimpleNameReference - } - - class MoveRenameJavaUsageInfo( - reference: PsiReference, - range: TextRange, - referencedElement: JetDeclaration, - val lightElementIndex: Int - ) : MoveRenameUsageInfo(reference.getElement(), reference, range.getStartOffset(), range.getEndOffset(), referencedElement, false) { - val jetDeclaration: JetDeclaration get() = getReferencedElement() as JetDeclaration - } - - private val PACKAGE_NAME_INFO_KEY = - Key.create("${javaClass().getCanonicalName()}.PACKAGE_NAME_INFO_KEY") + private fun clearState() { + packageNameInfo = null + declarationMoveProcessor = null } private fun JetFile.packageMatchesDirectory(): Boolean { @@ -88,95 +56,52 @@ public class MoveKotlinFileHandler : MoveFileHandler() { return !JavaProjectRootsUtil.isOutsideJavaSourceRoot(element) } - override fun prepareMovedFile(file: PsiFile, moveDestination: PsiDirectory, oldToNewMap: Map) { - if (file is JetFile && file.packageMatchesDirectory()) { - val newPackage = moveDestination.getPackage() - if (newPackage != null) { - file.putCopyableUserData( - PACKAGE_NAME_INFO_KEY, - PackageNameInfo(file.getPackageFqName(), FqName(newPackage.getQualifiedName())) - ) - } - } - } - override fun findUsages( psiFile: PsiFile, newParent: PsiDirectory, searchInComments: Boolean, searchInNonJavaFiles: Boolean ): List? { + clearState() + if (psiFile !is JetFile || !psiFile.packageMatchesDirectory()) return null + val newPackage = newParent.getPackage() + if (newPackage == null) return null + + val packageNameInfo = PackageNameInfo(psiFile.getPackageFqName(), FqName(newPackage.getQualifiedName())) val project = psiFile.getProject() - val newPackageName = newParent.getPackage()?.getQualifiedName() ?: "" - val searchScope = project.projectScope() - psiFile.fileScope() - return psiFile.getDeclarations().flatMap { declaration -> - val name = (declaration as? JetNamedDeclaration)?.getName() - if (name != null) { - val newFqName = StringUtil.getQualifiedName(newPackageName, name)!! - - val results = ReferencesSearch.search(declaration, searchScope, false) - .toSet() - .mapTo(ArrayList()) { ref -> - val range = ref.getRangeInElement()!! - - when (ref) { - is JetSimpleNameReference -> - MoveRenameKotlinUsageInfo(ref, range, declaration, FqName(newFqName)) - is JetReference -> - // Can't rebind other JetReferences - null - else -> { - val lightElementWithIndex = - declaration.toLightElements().withIndices().find { p -> ref.isReferenceTo(p.second) } - if (lightElementWithIndex != null && lightElementWithIndex.first >= 0) { - MoveRenameJavaUsageInfo(ref, range, declaration, lightElementWithIndex.first) - } - else null - } - } - } - .filterNotNull() - if (declaration is JetClassOrObject) { - declaration.descriptor?.let { DescriptorUtils.getFqName(it).asString() }?.let { stringToSearch -> - TextOccurrencesUtil.findNonCodeUsages( - declaration, stringToSearch, searchInComments, searchInNonJavaFiles, newFqName, results - ) - } + val declarationMoveProcessor = MoveKotlinTopLevelDeclarationsProcessor( + project, + MoveKotlinTopLevelDeclarationsOptions( + elementsToMove = psiFile.getDeclarations().filterIsInstance(javaClass()), + moveTarget = DeferredJetFileKotlinMoveTarget(project, packageNameInfo.newPackageName) { + MoveFilesOrDirectoriesUtil.doMoveFile(psiFile, newParent) + newParent.findFile(psiFile.getName()) as? JetFile + }, + updateInternalReferences = false + ), + object: Mover { + [suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")] + override fun invoke(originalElement: JetNamedDeclaration, targetFile: JetFile): JetNamedDeclaration = originalElement } + ) - results - } - else Collections.emptyList() - } + this.packageNameInfo = packageNameInfo + this.declarationMoveProcessor = declarationMoveProcessor + + return declarationMoveProcessor.findUsages().toList() } - override fun retargetUsages(usageInfos: List?, oldToNewMap: Map?) { - usageInfos?.forEach { usage -> - when (usage) { - is MoveRenameKotlinUsageInfo -> { - usage.jetReference.bindToFqName(usage.newFqName) - } - is MoveRenameJavaUsageInfo -> { - val lightElements = usage.jetDeclaration.toLightElements() - val index = usage.lightElementIndex - if (index < lightElements.size) { - usage.getReference()!!.bindToElement(lightElements[index]) - } - else { - LOG.error("Can't find light element with index $index for ${usage.jetDeclaration.getText()} ") - } - } - } - } + override fun prepareMovedFile(file: PsiFile, moveDestination: PsiDirectory, oldToNewMap: Map) { + } override fun updateMovedFile(file: PsiFile) { if (file !is JetFile) return - val packageNameInfo = file.getAndRemoveCopyableUserData(PACKAGE_NAME_INFO_KEY) + val packageNameInfo = packageNameInfo if (packageNameInfo == null) return val usages = file.getInternalReferencesToUpdateOnPackageNameChange(packageNameInfo) @@ -185,4 +110,19 @@ public class MoveKotlinFileHandler : MoveFileHandler() { val packageRef = file.getPackageDirective()?.getLastReferenceExpression()?.getReference() as? JetSimpleNameReference packageRef?.bindToFqName(packageNameInfo.newPackageName) } + + override fun retargetUsages(usageInfos: List?, oldToNewMap: Map?) { + val processor = declarationMoveProcessor ?: return + + val project = processor.project + val ensureElementsToShortenIsEmpty = project.ensureElementsToShortenIsEmptyBeforeRefactoring + + try { + project.ensureElementsToShortenIsEmptyBeforeRefactoring = false + usageInfos?.let { processor.execute(it) } + } finally { + project.ensureElementsToShortenIsEmptyBeforeRefactoring = ensureElementsToShortenIsEmpty + clearState() + } + } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/KotlinMoveTarget.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/KotlinMoveTarget.kt index 33f8309e52f..6e503029745 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/KotlinMoveTarget.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/KotlinMoveTarget.kt @@ -22,6 +22,9 @@ import org.jetbrains.jet.lang.psi.JetFile import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile import com.intellij.psi.PsiManager +import org.jetbrains.jet.lang.resolve.name.FqName +import com.intellij.openapi.project.Project +import kotlin.properties.Delegates public trait KotlinMoveTarget { val packageWrapper: PackageWrapper? @@ -45,7 +48,7 @@ public class MoveDestinationKotlinMoveTarget(val moveDestination: MoveDestinatio } public class JetFileKotlinMoveTarget(val targetFile: JetFile): KotlinMoveTarget { - override val packageWrapper: PackageWrapper? = targetFile.getPackageName()?.let { packageName -> + override val packageWrapper: PackageWrapper? = targetFile.getPackageFqName().asString().let { packageName -> PackageWrapper(PsiManager.getInstance(targetFile.getProject()), packageName) } @@ -53,6 +56,22 @@ public class JetFileKotlinMoveTarget(val targetFile: JetFile): KotlinMoveTarget override fun getTargetPsiIfExists(originalPsi: PsiElement): PsiElement? = targetFile + // No additional verification is needed + override fun verify(file: PsiFile): String? = null +} + +public class DeferredJetFileKotlinMoveTarget( + project: Project, + val packageFqName: FqName, + createFile: () -> JetFile?): KotlinMoveTarget { + val createdFile: JetFile? by Delegates.lazy(createFile) + + override val packageWrapper: PackageWrapper = PackageWrapper(PsiManager.getInstance(project), packageFqName.asString()) + + override fun getOrCreateTargetPsi(originalPsi: PsiElement): PsiElement? = createdFile + + override fun getTargetPsiIfExists(originalPsi: PsiElement): PsiElement? = null + // No additional verification is needed override fun verify(file: PsiFile): String? = null } \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt index 08151ac0f59..67377853bd7 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/MoveKotlinTopLevelDeclarationsProcessor.kt @@ -72,16 +72,32 @@ import org.jetbrains.jet.plugin.refactoring.move.postProcessMoveUsages import org.jetbrains.jet.plugin.references.JetSimpleNameReference.ShorteningMode import org.jetbrains.jet.lang.psi.psiUtil.isAncestor import org.jetbrains.jet.plugin.refactoring.move.MoveRenameUsageInfoForExtension +import org.jetbrains.jet.lang.psi.JetDeclaration + +trait Mover: (originalElement: JetNamedDeclaration, targetFile: JetFile) -> JetNamedDeclaration { + object Default: Mover { + [suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE")] + override fun invoke(originalElement: JetNamedDeclaration, targetFile: JetFile): JetNamedDeclaration { + val newElement = targetFile.add(originalElement) as JetNamedDeclaration + originalElement.delete() + return newElement + } + } +} public class MoveKotlinTopLevelDeclarationsOptions( val elementsToMove: Collection, val moveTarget: KotlinMoveTarget, val searchInCommentsAndStrings: Boolean = true, val searchInNonCode: Boolean = true, + val updateInternalReferences: Boolean = true, val moveCallback: MoveCallback? = null ) -public class MoveKotlinTopLevelDeclarationsProcessor(project: Project, val options: MoveKotlinTopLevelDeclarationsOptions) : BaseRefactoringProcessor(project) { +public class MoveKotlinTopLevelDeclarationsProcessor( + val project: Project, + val options: MoveKotlinTopLevelDeclarationsOptions, + val mover: Mover = Mover.Default) : BaseRefactoringProcessor(project) { class object { private val LOG: Logger = Logger.getInstance(javaClass()) @@ -100,7 +116,7 @@ public class MoveKotlinTopLevelDeclarationsProcessor(project: Project, val optio ) } - override fun findUsages(): Array { + public override fun findUsages(): Array { val newPackageName = options.moveTarget.packageWrapper?.getQualifiedName() ?: "" fun collectUsages(): List { @@ -232,26 +248,23 @@ public class MoveKotlinTopLevelDeclarationsProcessor(project: Project, val optio val targetFile = if (targetPsi is PsiDirectory) { val existingFile = if (targetPsi != file!!.getContainingDirectory()) targetPsi.findFile(file.getName()) else null - val newFile = existingFile ?: declaration.getFileNameAfterMove()?.let { - fileName -> - createKotlinFile(fileName, targetPsi) - } - - newFile + existingFile ?: declaration.getFileNameAfterMove()?.let {createKotlinFile(it, targetPsi)} } else targetPsi assert(targetFile is JetFile, "Couldn't create Koltin file for: ${declaration.javaClass}: ${declaration.getText()}") + targetFile as JetFile - val packageNameInfo = PackageNameInfo(file!!.getPackageFqName(), (targetFile as JetFile).getPackageFqName()) - val (usagesToProcessLater, usagesToProcessNow) = declaration - .getInternalReferencesToUpdateOnPackageNameChange(packageNameInfo) - .partition { it is MoveRenameUsageInfoForExtension } - postProcessMoveUsages(usagesToProcessNow, shorteningMode = ShorteningMode.NO_SHORTENING) - usagesToProcessAfterMove.addAll(usagesToProcessLater) + if (options.updateInternalReferences) { + val packageNameInfo = PackageNameInfo(file!!.getPackageFqName(), targetFile.getPackageFqName()) + val (usagesToProcessLater, usagesToProcessNow) = declaration + .getInternalReferencesToUpdateOnPackageNameChange(packageNameInfo) + .partition { it is MoveRenameUsageInfoForExtension } + postProcessMoveUsages(usagesToProcessNow, shorteningMode = ShorteningMode.NO_SHORTENING) + usagesToProcessAfterMove.addAll(usagesToProcessLater) + } - val newElement = targetFile.add(declaration) as JetNamedDeclaration - declaration.delete() + val newElement = mover(declaration, targetFile) newElement.addToShorteningWaitSet() @@ -294,5 +307,9 @@ public class MoveKotlinTopLevelDeclarationsProcessor(project: Project, val optio options.moveCallback?.refactoringCompleted() } + fun execute(usages: List) { + execute(usages.copyToArray()) + } + override fun getCommandName(): String = REFACTORING_NAME } diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java index 622ccf0e230..fa409607fbd 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/move/moveTopLevelDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java @@ -365,9 +365,9 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { try { MoveKotlinTopLevelDeclarationsOptions options = new MoveKotlinTopLevelDeclarationsOptions( - elementsToMove, target, isSearchInComments(), isSearchInNonJavaFiles(), moveCallback + elementsToMove, target, isSearchInComments(), isSearchInNonJavaFiles(), true, moveCallback ); - invokeRefactoring(new MoveKotlinTopLevelDeclarationsProcessor(myProject, options)); + invokeRefactoring(new MoveKotlinTopLevelDeclarationsProcessor(myProject, options, Mover.Default.INSTANCE$)); } catch (IncorrectOperationException e) { CommonRefactoringUtil.showErrorMessage(RefactoringBundle.message("error.title"), e.getMessage(), null, myProject); diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt index 1f04ded1d18..a3dfdc079d4 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt @@ -1,10 +1,15 @@ package a +import b.test +import b.TEST import b.Test fun bar() { val t: Test = Test() - b.test() - println(b.TEST) - b.TEST = "" + test() + t.test() + println(TEST) + println(t.TEST) + TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/specificImportsWithAliases.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/specificImportsWithAliases.kt index bba97ec20cc..e64af82a44f 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/specificImportsWithAliases.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/specificImportsWithAliases.kt @@ -7,6 +7,9 @@ import b.TEST as _TEST fun bar() { val t: _Test = _Test() _test() + t._test() println(_TEST) + println(t._TEST) _TEST = "" + t._TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.java index 3a9f2dc257f..a8303af57de 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); b.BPackage.test(); + b.BPackage.test(t); System.out.println(b.BPackage.getTEST()); + System.out.println(b.BPackage.getTEST(t)); b.BPackage.setTEST(""); + b.BPackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt index 1f04ded1d18..a3dfdc079d4 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt @@ -1,10 +1,15 @@ package a +import b.test +import b.TEST import b.Test fun bar() { val t: Test = Test() - b.test() - println(b.TEST) - b.TEST = "" + test() + t.test() + println(TEST) + println(t.TEST) + TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/onDemandStaticImport.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/onDemandStaticImport.java index 3a9f2dc257f..a8303af57de 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/onDemandStaticImport.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/onDemandStaticImport.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); b.BPackage.test(); + b.BPackage.test(t); System.out.println(b.BPackage.getTEST()); + System.out.println(b.BPackage.getTEST(t)); b.BPackage.setTEST(""); + b.BPackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificImportsWithAliases.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificImportsWithAliases.kt index b86967caf8f..355aa219ca5 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificImportsWithAliases.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificImportsWithAliases.kt @@ -7,6 +7,9 @@ import b.TEST as _TEST fun bar() { val t: _Test = _Test() _test() + t._test() println(_TEST) + println(t._TEST) _TEST = "" + t._TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificStaticImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificStaticImports.java index d14a1d7209a..4a2d61a8684 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificStaticImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/specificStaticImports.java @@ -10,7 +10,10 @@ class J { void bar() { Test t = new Test(); test(); + test(t); System.out.println(getTEST()); + System.out.println(getTEST(t)); setTEST(""); + setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt index e4c5c782735..7c0d7381041 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/b/main.kt @@ -15,7 +15,21 @@ fun test() { c.foo() } +fun Test.test() { + a.foo() + foo() + c.foo() +} + var TEST: String + get() = a.FOO + FOO + c.FOO + set(value: String) { + a.FOO = value + FOO = value + c.FOO = value + } + +var Test.TEST: String get() = a.FOO + FOO + c.FOO set(value: String) { a.FOO = value diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.java index c0f62a5d044..f3e65e2c231 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); b.BPackage.test(); + b.BPackage.test(t); System.out.println(b.BPackage.getTEST()); + System.out.println(b.BPackage.getTEST(t)); b.BPackage.setTEST(""); + b.BPackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.java index c0f62a5d044..f3e65e2c231 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); b.BPackage.test(); + b.BPackage.test(t); System.out.println(b.BPackage.getTEST()); + System.out.println(b.BPackage.getTEST(t)); b.BPackage.setTEST(""); + b.BPackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt index 0fd1a7f18f6..81c92e2533e 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt @@ -1,11 +1,16 @@ package c import a.* +import b.test +import b.TEST import b.Test fun bar() { val t: Test = Test() - b.test() - println(b.TEST) - b.TEST = "" + test() + t.test() + println(TEST) + println(t.TEST) + TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandStaticImport.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandStaticImport.java index c0f62a5d044..f3e65e2c231 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandStaticImport.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandStaticImport.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); b.BPackage.test(); + b.BPackage.test(t); System.out.println(b.BPackage.getTEST()); + System.out.println(b.BPackage.getTEST(t)); b.BPackage.setTEST(""); + b.BPackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.java index c0f62a5d044..f3e65e2c231 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); b.BPackage.test(); + b.BPackage.test(t); System.out.println(b.BPackage.getTEST()); + System.out.println(b.BPackage.getTEST(t)); b.BPackage.setTEST(""); + b.BPackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.kt index 379acf19964..cd845fd6d68 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImports.kt @@ -7,6 +7,9 @@ import b.TEST fun bar() { val t: Test = Test() test() + t.test() println(TEST) + println(t.TEST) TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImportsWithAliases.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImportsWithAliases.kt index d27c7b0d7e9..e471324147b 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImportsWithAliases.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificImportsWithAliases.kt @@ -7,6 +7,9 @@ import b.TEST as _TEST fun bar() { val t: _Test = _Test() _test() + t._test() println(_TEST) + println(t._TEST) _TEST = "" + t._TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificStaticImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificStaticImports.java index 3afa17d0ab0..1db3b6e7a4c 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificStaticImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/specificStaticImports.java @@ -10,7 +10,10 @@ class J { void bar() { Test t = new Test(); test(); + test(t); System.out.println(getTEST()); + System.out.println(getTEST(t)); setTEST(""); + setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/noImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/noImports.kt index f1f6bb626eb..1b0357f6798 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/noImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/noImports.kt @@ -3,6 +3,9 @@ package a fun bar() { val t: Test = Test() test() + t.test() println(TEST) + println(t.TEST) TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/specificImportsWithAliases.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/specificImportsWithAliases.kt index 56bf0a198f2..f2ebb8c577d 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/specificImportsWithAliases.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/_a/specificImportsWithAliases.kt @@ -7,6 +7,9 @@ import a.TEST as _TEST fun bar() { val t: _Test = _Test() _test() + t._test() println(_TEST) + println(t._TEST) _TEST = "" + t._TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt index 8426f5a7678..adee9e3a7d9 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/main.kt @@ -15,7 +15,21 @@ fun test() { c.foo() } +fun Test.test() { + foo() + b.foo() + c.foo() +} + var TEST: String + get() = FOO + b.FOO + c.FOO + set(value: String) { + FOO = value + b.FOO = value + c.FOO = value + } + +var Test.TEST: String get() = FOO + b.FOO + c.FOO set(value: String) { FOO = value diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.java index 48f7608533b..ef1deba3ee2 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.java @@ -4,7 +4,10 @@ class J { void bar() { Test t = new Test(); APackage.test(); + APackage.test(t); System.out.println(APackage.getTEST()); + System.out.println(APackage.getTEST(t)); APackage.setTEST(""); + APackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.kt index f1f6bb626eb..1b0357f6798 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/noImports.kt @@ -3,6 +3,9 @@ package a fun bar() { val t: Test = Test() test() + t.test() println(TEST) + println(t.TEST) TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/onDemandStaticImport.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/onDemandStaticImport.java index 73df5b87e21..56250b50fbf 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/onDemandStaticImport.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/onDemandStaticImport.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); test(); + test(t); System.out.println(getTEST()); + System.out.println(getTEST(t)); setTEST(""); + setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificImportsWithAliases.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificImportsWithAliases.kt index 140fb22176a..e4cf423193c 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificImportsWithAliases.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificImportsWithAliases.kt @@ -7,6 +7,9 @@ import a.TEST as _TEST fun bar() { val t: _Test = _Test() _test() + t._test() println(_TEST) + println(t._TEST) _TEST = "" + t._TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificStaticImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificStaticImports.java index 5cd0a6e8285..bbce0542fe4 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificStaticImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/a/specificStaticImports.java @@ -8,7 +8,10 @@ class J { void bar() { Test t = new Test(); test(); + test(t); System.out.println(getTEST()); + System.out.println(getTEST(t)); setTEST(""); + setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/noImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/noImports.java index d0bf461b132..b8781e04990 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/noImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/noImports.java @@ -4,7 +4,10 @@ class J { void bar() { a.Test t = new a.Test(); a.APackage.test(); + a.APackage.test(t); System.out.println(a.APackage.getTEST()); + System.out.println(a.APackage.getTEST(t)); a.APackage.setTEST(""); + a.APackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.java index 7d1efd4e2a3..3f97a339b73 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.java @@ -6,7 +6,10 @@ class J { void bar() { Test t = new Test(); APackage.test(); + APackage.test(t); System.out.println(APackage.getTEST()); + System.out.println(APackage.getTEST(t)); APackage.setTEST(""); + APackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.kt index e21f9c03cf6..5be9bb91986 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandImport.kt @@ -5,6 +5,9 @@ import a.* fun bar() { val t: Test = Test() test() + t.test() println(TEST) + println(t.TEST) TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandStaticImport.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandStaticImport.java index 16b46ec298a..2a20fd2eb17 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandStaticImport.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/onDemandStaticImport.java @@ -6,7 +6,10 @@ class J { void bar() { a.Test t = new a.Test(); test(); + test(t); System.out.println(getTEST()); + System.out.println(getTEST(t)); setTEST(""); + setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.java index 79dcd89211a..dcb92bbc562 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.java @@ -7,7 +7,10 @@ class J { void bar() { Test t = new Test(); APackage.test(); + APackage.test(t); System.out.println(APackage.getTEST()); + System.out.println(APackage.getTEST(t)); APackage.setTEST(""); + APackage.setTEST(t, ""); } } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.kt index 08424813077..c3f0f1ce0e3 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImports.kt @@ -7,6 +7,9 @@ import a.TEST fun bar() { val t: Test = Test() test() + t.test() println(TEST) + println(t.TEST) TEST = "" + t.TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImportsWithAliases.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImportsWithAliases.kt index 403696ccf1f..520205e8ad9 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImportsWithAliases.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificImportsWithAliases.kt @@ -7,6 +7,9 @@ import a.TEST as _TEST fun bar() { val t: _Test = _Test() _test() + t._test() println(_TEST) + println(t._TEST) _TEST = "" + t._TEST = "" } diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificStaticImports.java b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificStaticImports.java index 32dd91086a5..a0e4e932076 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificStaticImports.java +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/before/c/specificStaticImports.java @@ -8,7 +8,10 @@ class J { void bar() { a.Test t = new a.Test(); test(); + test(t); System.out.println(getTEST()); + System.out.println(getTEST(t)); setTEST(""); + setTEST(t, ""); } }