diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedSymbolUsageFixBase.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedSymbolUsageFixBase.kt index c625f8b306e..268d65feaf2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedSymbolUsageFixBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedSymbolUsageFixBase.kt @@ -132,7 +132,8 @@ public abstract class DeprecatedSymbolUsageFixBase( val descriptor = resolvedCall.getResultingDescriptor() val callExpression = resolvedCall.getCall().getCallElement() as JetExpression - val qualifiedExpression = callExpression.getParent() as? JetQualifiedExpression + val parent = callExpression.getParent() + val qualifiedExpression = if (parent is JetQualifiedExpression && callExpression == parent.getSelectorExpression()) parent else null val expressionToBeReplaced = qualifiedExpression ?: callExpression val commentSaver = CommentSaver(expressionToBeReplaced) diff --git a/idea/testData/quickfix/deprecatedSymbolUsage/callChainBug.kt b/idea/testData/quickfix/deprecatedSymbolUsage/callChainBug.kt new file mode 100644 index 00000000000..e79ff1e6c62 --- /dev/null +++ b/idea/testData/quickfix/deprecatedSymbolUsage/callChainBug.kt @@ -0,0 +1,10 @@ +// "Replace with 'newFun()'" "true" + +@deprecated("", ReplaceWith("newFun()")) +fun oldFun(): String = "" + +fun newFun(): String = "" + +fun foo() { + val value = oldFun().length() +} diff --git a/idea/testData/quickfix/deprecatedSymbolUsage/callChainBug.kt.after b/idea/testData/quickfix/deprecatedSymbolUsage/callChainBug.kt.after new file mode 100644 index 00000000000..19836a3bf70 --- /dev/null +++ b/idea/testData/quickfix/deprecatedSymbolUsage/callChainBug.kt.after @@ -0,0 +1,10 @@ +// "Replace with 'newFun()'" "true" + +@deprecated("", ReplaceWith("newFun()")) +fun oldFun(): String = "" + +fun newFun(): String = "" + +fun foo() { + val value = newFun().length() +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 8f89972deb6..87e40f2d2ec 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -2872,6 +2872,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/deprecatedSymbolUsage"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } + @TestMetadata("callChainBug.kt") + public void testCallChainBug() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/deprecatedSymbolUsage/callChainBug.kt"); + doTest(fileName); + } + @TestMetadata("callWithError.kt") public void testCallWithError() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/deprecatedSymbolUsage/callWithError.kt");