Change Signature: Fix descriptor comparison when receiver type is changed
#KT-9201 Fixed
This commit is contained in:
+2
-1
@@ -55,6 +55,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.JavaResolutionUtils;
|
|||||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils;
|
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils;
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde;
|
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde;
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.JetFileReferencesResolver;
|
import org.jetbrains.kotlin.idea.codeInsight.JetFileReferencesResolver;
|
||||||
|
import org.jetbrains.kotlin.idea.core.DescriptorUtilsKt;
|
||||||
import org.jetbrains.kotlin.idea.core.refactoring.JetRefactoringUtilKt;
|
import org.jetbrains.kotlin.idea.core.refactoring.JetRefactoringUtilKt;
|
||||||
import org.jetbrains.kotlin.idea.refactoring.CallableRefactoringKt;
|
import org.jetbrains.kotlin.idea.refactoring.CallableRefactoringKt;
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.*;
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.*;
|
||||||
@@ -420,7 +421,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro
|
|||||||
@NotNull ThisReceiver receiverValue
|
@NotNull ThisReceiver receiverValue
|
||||||
) {
|
) {
|
||||||
DeclarationDescriptor targetDescriptor = receiverValue.getDeclarationDescriptor();
|
DeclarationDescriptor targetDescriptor = receiverValue.getDeclarationDescriptor();
|
||||||
if (targetDescriptor == callableDescriptor) {
|
if (DescriptorUtilsKt.compareDescriptors(callElement.getProject(), targetDescriptor, callableDescriptor)) {
|
||||||
assert originalReceiverInfo != null : "No original receiver info provided: " + functionUsageInfo.getDeclaration().getText();
|
assert originalReceiverInfo != null : "No original receiver info provided: " + functionUsageInfo.getDeclaration().getText();
|
||||||
result.add(new JetImplicitThisToParameterUsage(callElement, originalReceiverInfo, functionUsageInfo));
|
result.add(new JetImplicitThisToParameterUsage(callElement, originalReceiverInfo, functionUsageInfo));
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
open class Older { fun upper() {} }
|
||||||
|
class Younger : Older()
|
||||||
|
public fun outer(younger: Older) {
|
||||||
|
younger.upper()
|
||||||
|
}
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
open class Older { fun upper() {} }
|
||||||
|
class Younger : Older()
|
||||||
|
public fun Younger.<caret>outer() { upper() }
|
||||||
+8
@@ -1332,6 +1332,14 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase {
|
|||||||
doTest(changeInfo);
|
doTest(changeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testImplicitThisToParameterWithChangedType() throws Exception {
|
||||||
|
JetChangeInfo changeInfo = getChangeInfo();
|
||||||
|
//noinspection ConstantConditions
|
||||||
|
changeInfo.getReceiverParameterInfo().setCurrentTypeText("Older");
|
||||||
|
changeInfo.setReceiverParameterInfo(null);
|
||||||
|
doTest(changeInfo);
|
||||||
|
}
|
||||||
|
|
||||||
private List<Editor> editors = null;
|
private List<Editor> editors = null;
|
||||||
|
|
||||||
private static final String[] EXTENSIONS = {".kt", ".java"};
|
private static final String[] EXTENSIONS = {".kt", ".java"};
|
||||||
|
|||||||
Reference in New Issue
Block a user