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
|
||||
}
|
||||
|
||||
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.
|
||||
* 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) {
|
||||
val method = getMethod()
|
||||
javaChangeInfos = (originalPsiMethods zip method.toLightMethods()).map {
|
||||
javaChangeInfos = (filterLightMethods(originalPsiMethods) zip filterLightMethods(method.toLightMethods())).map {
|
||||
val (originalPsiMethod, currentPsiMethod) = it
|
||||
|
||||
when (method) {
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ public class JetChangeSignatureProcessor(project: Project,
|
||||
|
||||
override fun findUsages(): Array<UsageInfo> {
|
||||
val allUsages = ArrayList<UsageInfo>()
|
||||
getChangeInfo().getOrCreateJavaChangeInfos()?.let { javaChangeInfos ->
|
||||
getChangeInfo().getOrCreateJavaChangeInfos(true)?.let { javaChangeInfos ->
|
||||
val javaProcessor = JavaChangeSignatureUsageProcessor()
|
||||
javaChangeInfos.mapTo(allUsages) {
|
||||
KotlinWrapperForJavaUsageInfos(it, javaProcessor.findUsages(it), getChangeInfo().getMethod())
|
||||
|
||||
+1
-1
@@ -966,7 +966,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro
|
||||
boolean isJavaMethodUsage = isJavaMethodUsage(usageInfo);
|
||||
|
||||
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();
|
||||
|
||||
KotlinWrapperForJavaUsageInfos wrapperForJavaUsageInfos = (KotlinWrapperForJavaUsageInfos) usageInfo;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import static _DefaultPackage.bar;
|
||||
import static FunctionRenameJavaUsagesBeforeKt.bar;
|
||||
|
||||
class J {
|
||||
void test() {
|
||||
|
||||
Reference in New Issue
Block a user