From ab58dc3586c335fc991911ef01d6f88f74baf579 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 11 Sep 2015 19:50:49 +0200 Subject: [PATCH] allow returning multiple PsiMethod wrappers for a JetFunction or JetPropertyAccessor; use that for handling Java usages through old-style and new-style facades #KT-9102 Fixed --- .../jetbrains/kotlin/asJava/LightClassUtil.kt | 80 +++++++++++-------- .../KotlinReferencesSearcher.kt | 14 ++-- .../handlers/KotlinFindMemberUsagesHandler.kt | 10 +-- .../kotlinTopLevelMethodUsages.3.java | 11 +++ .../kotlinTopLevelMethodUsages.results.txt | 4 +- ...inTopLevelMethodUsagesWithRenamedFile.0.kt | 7 ++ ...TopLevelMethodUsagesWithRenamedFile.1.java | 11 +++ ...velMethodUsagesWithRenamedFile.results.txt | 2 + .../kotlinTopLevelPropertyUsages.3.java | 11 +++ .../kotlinTopLevelPropertyUsages.results.txt | 5 +- .../RenameKotlinPackageFunctionFromJava.kt | 11 +++ .../after/testing/JavaClient.java | 9 +++ .../RenameKotlinPackageFunctionFromJava.kt | 11 +++ .../before/testing/JavaClient.java | 9 +++ .../renameKotlinPackageFunctionFromJava.test | 6 ++ .../after/RenameTopLevelVarProperty.kt | 3 + .../after/testing/JavaClientNewFacade.java | 10 +++ .../after/testing/JavaClientOldFacade.java | 10 +++ .../before/RenameTopLevelVarProperty.kt | 3 + .../before/testing/JavaClientNewFacade.java | 10 +++ .../before/testing/JavaClientOldFacade.java | 10 +++ .../renameTopLevelVarProperty.test | 5 ++ .../JetFindUsagesTestGenerated.java | 6 ++ .../rename/RenameTestGenerated.java | 12 +++ 24 files changed, 223 insertions(+), 47 deletions(-) create mode 100644 idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.3.java create mode 100644 idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.0.kt create mode 100644 idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.1.java create mode 100644 idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.results.txt create mode 100644 idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.3.java create mode 100644 idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/RenameKotlinPackageFunctionFromJava.kt create mode 100644 idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/testing/JavaClient.java create mode 100644 idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/RenameKotlinPackageFunctionFromJava.kt create mode 100644 idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/testing/JavaClient.java create mode 100644 idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/renameKotlinPackageFunctionFromJava.test create mode 100644 idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/RenameTopLevelVarProperty.kt create mode 100644 idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientNewFacade.java create mode 100644 idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientOldFacade.java create mode 100644 idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/RenameTopLevelVarProperty.kt create mode 100644 idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientNewFacade.java create mode 100644 idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientOldFacade.java create mode 100644 idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/renameTopLevelVarProperty.test diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt index 0b25c7d16ee..e049f3326fb 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt @@ -31,6 +31,7 @@ import com.intellij.psi.util.PsiTreeUtil import com.intellij.util.PathUtil import com.intellij.util.SmartList import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.kotlin.PackageClassUtils import org.jetbrains.kotlin.name.FqName @@ -40,7 +41,6 @@ import org.jetbrains.kotlin.utils.rethrow import java.io.File import java.net.MalformedURLException import java.net.URL -import java.util.* public object LightClassUtil { private val LOG = Logger.getInstance(LightClassUtil::class.java) @@ -141,7 +141,7 @@ public object LightClassUtil { } public fun getLightFieldForCompanionObject(companionObject: JetClassOrObject): PsiField? { - val outerPsiClass = getWrappingClass(companionObject) + val outerPsiClass = getWrappingClass(companionObject, true) if (outerPsiClass != null) { for (fieldOfParent in outerPsiClass.fields) { if ((fieldOfParent is KotlinLightElement<*, *>) && fieldOfParent.getOrigin() === companionObject) { @@ -163,7 +163,7 @@ public object LightClassUtil { } private fun getLightClassBackingField(declaration: JetDeclaration): PsiField? { - var psiClass: PsiClass = getWrappingClass(declaration) ?: return null + var psiClass: PsiClass = getWrappingClass(declaration, true) ?: return null if (psiClass is KotlinLightClass) { val origin = psiClass.getOrigin() @@ -194,16 +194,19 @@ public object LightClassUtil { return getPsiMethodWrapper(function) } + public fun getLightClassMethods(function: JetFunction): Collection { + return getPsiMethodWrappers(function, true) + } + private fun getPsiMethodWrapper(declaration: JetDeclaration): PsiMethod? { - val wrappers = getPsiMethodWrappers(declaration, false) - return if (!wrappers.isEmpty()) wrappers.get(0) else null + return getPsiMethodWrappers(declaration, false).firstOrNull() } private fun getPsiMethodWrappers(declaration: JetDeclaration, collectAll: Boolean): List { - val psiClass = getWrappingClass(declaration) ?: return emptyList() + val psiClasses = getWrappingClasses(declaration, collectAll) val methods = SmartList() - for (method in psiClass.methods) { + for (method in psiClasses.flatMap { it.methods.asList() }) { try { if (method is KotlinLightMethod && method.getOrigin() === declaration) { methods.add(method) @@ -224,7 +227,17 @@ public object LightClassUtil { return methods } - private fun getWrappingClass(declaration: JetDeclaration): PsiClass? { + private fun getWrappingClasses(declaration: JetDeclaration, collectAll: Boolean): Collection { + val wrappingClass = getWrappingClass(declaration, true) + val oldPackagePartWrappingClass = if (declaration.parent is JetFile && collectAll) + getWrappingClass(declaration, false) + else + null + + return setOf(wrappingClass, oldPackagePartWrappingClass).filterNotNull() + } + + private fun getWrappingClass(declaration: JetDeclaration, useNewPackageParts: Boolean): PsiClass? { var declaration = declaration if (declaration is JetParameter) { val constructorClass = JetPsiUtil.getClassIfParameterIsProperty(declaration) @@ -254,7 +267,11 @@ public object LightClassUtil { if (parent is JetFile) { // top-level declaration - val fqName = PackageClassUtils.getPackageClassFqName(parent.packageFqName) + val fqName = if (useNewPackageParts) + JvmFileClassUtil.getFileClassInfoNoResolve(parent).facadeClassFqName + else + PackageClassUtils.getPackageClassFqName(parent.packageFqName) + val project = declaration.project return JavaElementFinder.getInstance(project).findClass(fqName.asString(), GlobalSearchScope.allScope(project)) } @@ -276,6 +293,7 @@ public object LightClassUtil { specialGetter: PsiMethod?, specialSetter: PsiMethod?): PropertyAccessorsPsiMethods { var getterWrapper = specialGetter var setterWrapper = specialSetter + val additionalAccessors = arrayListOf() if (getterWrapper == null || setterWrapper == null) { // If some getter or setter isn't found yet try to get it from wrappers for general declaration @@ -284,29 +302,28 @@ public object LightClassUtil { it.name.startsWith(JvmAbi.GETTER_PREFIX) || it.name.startsWith(JvmAbi.SETTER_PREFIX) } - assert(wrappers.size() <= 2) { "Maximum two wrappers are expected to be generated for declaration: " + jetDeclaration.text } - for (wrapper in wrappers) { if (wrapper.getName().startsWith(JvmAbi.SETTER_PREFIX)) { - assert(setterWrapper == null || setterWrapper === specialSetter) { - "Setter accessor isn't expected to be reassigned (old: $setterWrapper, new: $wrapper)" + if (setterWrapper == null || setterWrapper === specialSetter) { + setterWrapper = wrapper + } + else { + additionalAccessors.add(wrapper) } - - setterWrapper = wrapper } else { - assert(getterWrapper == null || getterWrapper === specialGetter) { - "Getter accessor isn't expected to be reassigned (old: $getterWrapper, new: $wrapper)" + if (getterWrapper == null || getterWrapper == specialGetter) { + getterWrapper = wrapper + } + else { + additionalAccessors.add(wrapper) } - - getterWrapper = wrapper } } - } val backingField = getLightClassBackingField(jetDeclaration) - return PropertyAccessorsPsiMethods(getterWrapper, setterWrapper, backingField) + return PropertyAccessorsPsiMethods(getterWrapper, setterWrapper, backingField, additionalAccessors) } public fun buildLightTypeParameterList( @@ -325,20 +342,19 @@ public object LightClassUtil { return builder } - public class PropertyAccessorsPsiMethods(public val getter: PsiMethod?, public val setter: PsiMethod?, public val backingField: PsiField?) : Iterable { - private val accessors = ArrayList(2) + public class PropertyAccessorsPsiMethods(public val getter: PsiMethod?, + public val setter: PsiMethod?, + public val backingField: PsiField?, + additionalAccessors: List) : Iterable { + private val allMethods = arrayListOf() + val allDeclarations = arrayListOf() init { - if (getter != null) { - accessors.add(getter) - } - if (setter != null) { - accessors.add(setter) - } + listOf(getter, setter).filterNotNullTo(allMethods) + listOf(getter, setter, backingField).filterNotNullTo(allDeclarations) + allDeclarations.addAll(additionalAccessors) } - override fun iterator(): Iterator { - return accessors.iterator() - } + override fun iterator(): Iterator = allMethods.iterator() } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt index 94aa996fbad..ee7cb84ac49 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt @@ -223,8 +223,7 @@ public class KotlinReferencesSearcher : QueryExecutorBase { val propertyMethods = runReadAction { LightClassUtil.getLightClassPropertyMethods(element) } - searchNamedElement(queryParameters, propertyMethods.getter) - searchNamedElement(queryParameters, propertyMethods.setter) - searchNamedElement(queryParameters, propertyMethods.backingField) - + propertyMethods.allDeclarations.forEach { searchNamedElement(queryParameters, it) } } is JetParameter -> { diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt index a53a87cd0f8..4c112d32839 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt @@ -131,12 +131,12 @@ public abstract class KotlinFindMemberUsagesHandler val query = applyQueryFilters(element, options, ReferencesSearch.search(searchParameters)) if (!query.forEach(referenceProcessor)) return false - val psiMethod: PsiMethod? = when (element) { - is PsiMethod -> element - is JetFunction -> runReadAction { LightClassUtil.getLightClassMethod(element) } - else -> null + val psiMethods = when (element) { + is PsiMethod -> listOf(element) + is JetFunction -> runReadAction { LightClassUtil.getLightClassMethods(element) } + else -> listOf() } - if (psiMethod != null) { + for (psiMethod in psiMethods) { val query = applyQueryFilters(element, options, MethodReferencesSearch.search(psiMethod, options.searchScope, true)) if (!query.forEach(referenceProcessor)) return false } diff --git a/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.3.java b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.3.java new file mode 100644 index 00000000000..e1d8f34da83 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.3.java @@ -0,0 +1,11 @@ +package client; + +import server.KotlinTopLevelMethodUsages_0Kt; + +class JClient { + String s = KotlinTopLevelMethodUsages_0Kt.processRequest(); + + String sendRequest() { + return KotlinTopLevelMethodUsages_0Kt.processRequest(); + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.results.txt b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.results.txt index 3362fe62a3a..7cbd78b0d95 100644 --- a/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.results.txt +++ b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsages.results.txt @@ -2,4 +2,6 @@ [kotlinTopLevelMethodUsages.1.kt] Function call (10: 9) processRequest() [kotlinTopLevelMethodUsages.1.kt] Usage in import (3: 15) import server.processRequest [kotlinTopLevelMethodUsages.2.java] Unclassified usage (6: 30) String s = ServerPackage.processRequest(); -[kotlinTopLevelMethodUsages.2.java] Unclassified usage (9: 30) return ServerPackage.processRequest(); \ No newline at end of file +[kotlinTopLevelMethodUsages.2.java] Unclassified usage (9: 30) return ServerPackage.processRequest(); +[kotlinTopLevelMethodUsages.3.java] Unclassified usage (6: 47) String s = KotlinTopLevelMethodUsages_0Kt.processRequest(); +[kotlinTopLevelMethodUsages.3.java] Unclassified usage (9: 47) return KotlinTopLevelMethodUsages_0Kt.processRequest(); \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.0.kt b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.0.kt new file mode 100644 index 00000000000..da3423a7a0e --- /dev/null +++ b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.0.kt @@ -0,0 +1,7 @@ +// PSI_ELEMENT: org.jetbrains.kotlin.psi.JetNamedFunction +// OPTIONS: usages +@file:JvmName("RequestProcessor") +package server + +fun processRequest() = "foo" + diff --git a/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.1.java b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.1.java new file mode 100644 index 00000000000..faedf5379a8 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.1.java @@ -0,0 +1,11 @@ +package client; + +import server.RequestProcessor; + +class JClient { + String s = RequestProcessor.processRequest(); + + String sendRequest() { + return RequestProcessor.processRequest(); + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.results.txt b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.results.txt new file mode 100644 index 00000000000..a634df2c7d0 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.results.txt @@ -0,0 +1,2 @@ +Unclassified usage (6: 33) String s = RequestProcessor.processRequest(); +Unclassified usage (9: 33) return RequestProcessor.processRequest(); diff --git a/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.3.java b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.3.java new file mode 100644 index 00000000000..c00b64c05b9 --- /dev/null +++ b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.3.java @@ -0,0 +1,11 @@ +package client; + +import server.KotlinTopLevelPropertyUsages_0Kt; + +class JClient { + void fooBar() { + System.out.println("foo = " + KotlinTopLevelPropertyUsages_0Kt.getFoo()); + System.out.println("length: " + KotlinTopLevelPropertyUsages_0Kt.getFoo().length()); + KotlinTopLevelPropertyUsages_0Kt.setFoo(""); + } +} \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.results.txt b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.results.txt index e5772d5fb3e..716acf8c4ab 100644 --- a/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.results.txt +++ b/idea/testData/findUsages/kotlin/findPropertyUsages/kotlinTopLevelPropertyUsages.results.txt @@ -3,4 +3,7 @@ [kotlinTopLevelPropertyUsages.1.kt] Value read (7: 33) println("foo = ${server.foo}") [kotlinTopLevelPropertyUsages.2.java] Unclassified usage (7: 53) System.out.println("foo = " + ServerPackage.getFoo()); [kotlinTopLevelPropertyUsages.2.java] Unclassified usage (8: 55) System.out.println("length: " + ServerPackage.getFoo().length()); -[kotlinTopLevelPropertyUsages.2.java] Unclassified usage (9: 23) ServerPackage.setFoo(""); \ No newline at end of file +[kotlinTopLevelPropertyUsages.2.java] Unclassified usage (9: 23) ServerPackage.setFoo(""); +[kotlinTopLevelPropertyUsages.3.java] Unclassified usage (7: 72) System.out.println("foo = " + KotlinTopLevelPropertyUsages_0Kt.getFoo()); +[kotlinTopLevelPropertyUsages.3.java] Unclassified usage (8: 74) System.out.println("length: " + KotlinTopLevelPropertyUsages_0Kt.getFoo().length()); +[kotlinTopLevelPropertyUsages.3.java] Unclassified usage (9: 42) KotlinTopLevelPropertyUsages_0Kt.setFoo(""); \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/RenameKotlinPackageFunctionFromJava.kt b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/RenameKotlinPackageFunctionFromJava.kt new file mode 100644 index 00000000000..c16adb49437 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/RenameKotlinPackageFunctionFromJava.kt @@ -0,0 +1,11 @@ +@file:JvmName("Bartender") + +package testing.rename + +public fun bar() = 1 + +fun usage() { + bar() +} + +val some = bar() diff --git a/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/testing/JavaClient.java b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/testing/JavaClient.java new file mode 100644 index 00000000000..1c19e509425 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/after/testing/JavaClient.java @@ -0,0 +1,9 @@ +package testing; + +import testing.rename.Bartender; + +class JavaClient { + public void testing() { + Bartender.bar(); + } +} diff --git a/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/RenameKotlinPackageFunctionFromJava.kt b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/RenameKotlinPackageFunctionFromJava.kt new file mode 100644 index 00000000000..12a27a01c3d --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/RenameKotlinPackageFunctionFromJava.kt @@ -0,0 +1,11 @@ +@file:JvmName("Bartender") + +package testing.rename + +public fun foo() = 1 + +fun usage() { + foo() +} + +val some = foo() diff --git a/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/testing/JavaClient.java b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/testing/JavaClient.java new file mode 100644 index 00000000000..03f9555dd05 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/before/testing/JavaClient.java @@ -0,0 +1,9 @@ +package testing; + +import testing.rename.Bartender; + +class JavaClient { + public void testing() { + Bartender.foo(); + } +} diff --git a/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/renameKotlinPackageFunctionFromJava.test b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/renameKotlinPackageFunctionFromJava.test new file mode 100644 index 00000000000..64c7228f893 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/renameKotlinPackageFunctionFromJava.test @@ -0,0 +1,6 @@ +{ + "type": "JAVA_METHOD", + "classId": "testing/rename/Bartender", + "methodSignature": "int foo()", + "newName": "bar" +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/RenameTopLevelVarProperty.kt b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/RenameTopLevelVarProperty.kt new file mode 100644 index 00000000000..ea708325a81 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/RenameTopLevelVarProperty.kt @@ -0,0 +1,3 @@ +package testing.rename + +var /*rename*/bar: String = "xyzzy" diff --git a/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientNewFacade.java b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientNewFacade.java new file mode 100644 index 00000000000..0a8bede8afd --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientNewFacade.java @@ -0,0 +1,10 @@ +package testing; + +import testing.rename.RenameTopLevelVarPropertyKt; + +class JavaClientNewFacade { + public void foo() { + String old = RenameTopLevelVarPropertyKt.getBar(); + RenameTopLevelVarPropertyKt.setBar(old + "new"); + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientOldFacade.java b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientOldFacade.java new file mode 100644 index 00000000000..e3cab9fedb6 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/after/testing/JavaClientOldFacade.java @@ -0,0 +1,10 @@ +package testing; + +import testing.rename.RenamePackage; + +class JavaClientOldFacade { + public void foo() { + String old = RenamePackage.getBar(); + RenamePackage.setBar(old + "new"); + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/RenameTopLevelVarProperty.kt b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/RenameTopLevelVarProperty.kt new file mode 100644 index 00000000000..465e1bc2d13 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/RenameTopLevelVarProperty.kt @@ -0,0 +1,3 @@ +package testing.rename + +var /*rename*/foo: String = "xyzzy" diff --git a/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientNewFacade.java b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientNewFacade.java new file mode 100644 index 00000000000..40e026e3915 --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientNewFacade.java @@ -0,0 +1,10 @@ +package testing; + +import testing.rename.RenameTopLevelVarPropertyKt; + +class JavaClientNewFacade { + public void foo() { + String old = RenameTopLevelVarPropertyKt.getFoo(); + RenameTopLevelVarPropertyKt.setFoo(old + "new"); + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientOldFacade.java b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientOldFacade.java new file mode 100644 index 00000000000..27eca780a4f --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/before/testing/JavaClientOldFacade.java @@ -0,0 +1,10 @@ +package testing; + +import testing.rename.RenamePackage; + +class JavaClientOldFacade { + public void foo() { + String old = RenamePackage.getFoo(); + RenamePackage.setFoo(old + "new"); + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/renameTopLevelVarProperty.test b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/renameTopLevelVarProperty.test new file mode 100644 index 00000000000..620b949199a --- /dev/null +++ b/idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/renameTopLevelVarProperty.test @@ -0,0 +1,5 @@ +{ + "type": "MARKED_ELEMENT", + "mainFile": "RenameTopLevelVarProperty.kt", + "newName": "bar" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/JetFindUsagesTestGenerated.java b/idea/tests/org/jetbrains/kotlin/findUsages/JetFindUsagesTestGenerated.java index ae1f6378238..7b180e8b789 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/JetFindUsagesTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/findUsages/JetFindUsagesTestGenerated.java @@ -612,6 +612,12 @@ public class JetFindUsagesTestGenerated extends AbstractJetFindUsagesTest { doTest(fileName); } + @TestMetadata("kotlinTopLevelMethodUsagesWithRenamedFile.0.kt") + public void testKotlinTopLevelMethodUsagesWithRenamedFile() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTopLevelMethodUsagesWithRenamedFile.0.kt"); + doTest(fileName); + } + @TestMetadata("kotlinTraitImplThroughDelegate.0.kt") public void testKotlinTraitImplThroughDelegate() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/findUsages/kotlin/findFunctionUsages/kotlinTraitImplThroughDelegate.0.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java index c41a89afaa3..4b766fe16b9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java @@ -323,6 +323,12 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest(fileName); } + @TestMetadata("renameKotlinPackageFunctionFromJavaNewFacade/renameKotlinPackageFunctionFromJava.test") + public void testRenameKotlinPackageFunctionFromJavaNewFacade_RenameKotlinPackageFunctionFromJava() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinPackageFunctionFromJavaNewFacade/renameKotlinPackageFunctionFromJava.test"); + doTest(fileName); + } + @TestMetadata("renameKotlinPrimaryConstructorProperty/renameKotlinPrimaryConstructorProperty.test") public void testRenameKotlinPrimaryConstructorProperty_RenameKotlinPrimaryConstructorProperty() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinPrimaryConstructorProperty/renameKotlinPrimaryConstructorProperty.test"); @@ -341,6 +347,12 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest(fileName); } + @TestMetadata("renameKotlinTopLevelVarProperty/renameTopLevelVarProperty.test") + public void testRenameKotlinTopLevelVarProperty_RenameTopLevelVarProperty() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinTopLevelVarProperty/renameTopLevelVarProperty.test"); + doTest(fileName); + } + @TestMetadata("renameKotlinValProperty/renameAsJavaGetterForExplicitGetter.test") public void testRenameKotlinValProperty_RenameAsJavaGetterForExplicitGetter() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameKotlinValProperty/renameAsJavaGetterForExplicitGetter.test");