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.codeInsight.DescriptorToSourceUtilsIde;
|
||||
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.refactoring.CallableRefactoringKt;
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.*;
|
||||
@@ -420,7 +421,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro
|
||||
@NotNull ThisReceiver receiverValue
|
||||
) {
|
||||
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();
|
||||
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);
|
||||
}
|
||||
|
||||
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 static final String[] EXTENSIONS = {".kt", ".java"};
|
||||
|
||||
Reference in New Issue
Block a user