Change Signature: Fix processing of top-level declarations usages in Java (old/new package facades are supported)
This commit is contained in:
committed by
Dmitry Jemerov
parent
9e6c0e7ee2
commit
708f7fc51f
@@ -258,7 +258,11 @@ public open class JetChangeInfo(
|
|||||||
javaChangeInfos = null
|
javaChangeInfos = null
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun getOrCreateJavaChangeInfos(): List<JavaChangeInfo>? {
|
public fun getOrCreateJavaChangeInfos(multipleLightMethodsWithEqualNames: Boolean = false): List<JavaChangeInfo>? {
|
||||||
|
fun filterLightMethods(list: List<PsiMethod>): List<PsiMethod> {
|
||||||
|
return if (multipleLightMethodsWithEqualNames) list else list.groupBy { it.name }.values().map { it.firstOrNull() }.filterNotNull()
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When primaryMethodUpdated is false, changes to the primary Kotlin declaration are already confirmed, but not yet applied.
|
* When primaryMethodUpdated is false, changes to the primary Kotlin declaration are already confirmed, but not yet applied.
|
||||||
* It means that originalPsiMethod has already expired, but new one can't be created until Kotlin declaration is updated
|
* It means that originalPsiMethod has already expired, but new one can't be created until Kotlin declaration is updated
|
||||||
@@ -350,7 +354,7 @@ public open class JetChangeInfo(
|
|||||||
|
|
||||||
if (javaChangeInfos == null) {
|
if (javaChangeInfos == null) {
|
||||||
val method = getMethod()
|
val method = getMethod()
|
||||||
javaChangeInfos = (originalPsiMethods zip method.toLightMethods()).map {
|
javaChangeInfos = (filterLightMethods(originalPsiMethods) zip filterLightMethods(method.toLightMethods())).map {
|
||||||
val (originalPsiMethod, currentPsiMethod) = it
|
val (originalPsiMethod, currentPsiMethod) = it
|
||||||
|
|
||||||
when (method) {
|
when (method) {
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ public class JetChangeSignatureProcessor(project: Project,
|
|||||||
|
|
||||||
override fun findUsages(): Array<UsageInfo> {
|
override fun findUsages(): Array<UsageInfo> {
|
||||||
val allUsages = ArrayList<UsageInfo>()
|
val allUsages = ArrayList<UsageInfo>()
|
||||||
getChangeInfo().getOrCreateJavaChangeInfos()?.let { javaChangeInfos ->
|
getChangeInfo().getOrCreateJavaChangeInfos(true)?.let { javaChangeInfos ->
|
||||||
val javaProcessor = JavaChangeSignatureUsageProcessor()
|
val javaProcessor = JavaChangeSignatureUsageProcessor()
|
||||||
javaChangeInfos.mapTo(allUsages) {
|
javaChangeInfos.mapTo(allUsages) {
|
||||||
KotlinWrapperForJavaUsageInfos(it, javaProcessor.findUsages(it), getChangeInfo().getMethod())
|
KotlinWrapperForJavaUsageInfos(it, javaProcessor.findUsages(it), getChangeInfo().getMethod())
|
||||||
|
|||||||
+1
-1
@@ -966,7 +966,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro
|
|||||||
boolean isJavaMethodUsage = isJavaMethodUsage(usageInfo);
|
boolean isJavaMethodUsage = isJavaMethodUsage(usageInfo);
|
||||||
|
|
||||||
if (usageInfo instanceof KotlinWrapperForJavaUsageInfos) {
|
if (usageInfo instanceof KotlinWrapperForJavaUsageInfos) {
|
||||||
List<JavaChangeInfo> javaChangeInfos = ((JetChangeInfo) changeInfo).getOrCreateJavaChangeInfos();
|
List<JavaChangeInfo> javaChangeInfos = ((JetChangeInfo) changeInfo).getOrCreateJavaChangeInfos(false);
|
||||||
assert javaChangeInfos != null : "JavaChangeInfo not found: " + method.getText();
|
assert javaChangeInfos != null : "JavaChangeInfo not found: " + method.getText();
|
||||||
|
|
||||||
KotlinWrapperForJavaUsageInfos wrapperForJavaUsageInfos = (KotlinWrapperForJavaUsageInfos) usageInfo;
|
KotlinWrapperForJavaUsageInfos wrapperForJavaUsageInfos = (KotlinWrapperForJavaUsageInfos) usageInfo;
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
import static _DefaultPackage.bar;
|
import static FunctionRenameJavaUsagesBeforeKt.bar;
|
||||||
|
|
||||||
class J {
|
class J {
|
||||||
void test() {
|
void test() {
|
||||||
|
|||||||
Reference in New Issue
Block a user