Replace deprecated symbol usage: do not include 'Companion' in import directives when importing companion object
#KT-34078 Fixed
This commit is contained in:
committed by
Dmitry Gridin
parent
5250421002
commit
48968c0fe2
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.renderer.render
|
|||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess
|
import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.isCompanionObject
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
|
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver
|
||||||
@@ -160,7 +161,14 @@ class CodeToInlineBuilder(
|
|||||||
|
|
||||||
//TODO: other types of references ('[]' etc)
|
//TODO: other types of references ('[]' etc)
|
||||||
if (expression.canBeResolvedViaImport(target, bindingContext)) {
|
if (expression.canBeResolvedViaImport(target, bindingContext)) {
|
||||||
codeToInline.fqNamesToImport.add(target.importableFqName!!)
|
val importableFqName = if (target.isCompanionObject()) {
|
||||||
|
target.containingDeclaration?.importableFqName
|
||||||
|
} else {
|
||||||
|
target.importableFqName
|
||||||
|
}
|
||||||
|
if (importableFqName != null) {
|
||||||
|
codeToInline.fqNamesToImport.add(importableFqName)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expression.getReceiverExpression() == null) {
|
if (expression.getReceiverExpression() == null) {
|
||||||
|
|||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
// "Replace with 'A.bar(x)'" "true"
|
||||||
|
|
||||||
|
package test
|
||||||
|
|
||||||
|
import a.A
|
||||||
|
|
||||||
|
@Deprecated("bla", ReplaceWith("A.bar(x)", "a.A"))
|
||||||
|
fun foo(x: Any) {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
A.bar(1)
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
package a
|
||||||
|
|
||||||
|
class A {
|
||||||
|
companion object {
|
||||||
|
fun bar(x: Any) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
Vendored
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// "Replace with 'A.bar(x)'" "true"
|
||||||
|
|
||||||
|
package test
|
||||||
|
|
||||||
|
@Deprecated("bla", ReplaceWith("A.bar(x)", "a.A"))
|
||||||
|
fun foo(x: Any) {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
<caret>foo(1)
|
||||||
|
}
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
// "Replace with 'A.bar(x)'" "true"
|
||||||
|
|
||||||
|
package test
|
||||||
|
|
||||||
|
import a.A
|
||||||
|
|
||||||
|
@Deprecated("bla", ReplaceWith("A.bar(x)", "a.A"))
|
||||||
|
fun foo(x: Any) {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
A.bar(1)
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
package a
|
||||||
|
|
||||||
|
class A {
|
||||||
|
companion object F {
|
||||||
|
fun bar(x: Any) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
Vendored
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// "Replace with 'A.bar(x)'" "true"
|
||||||
|
|
||||||
|
package test
|
||||||
|
|
||||||
|
@Deprecated("bla", ReplaceWith("A.bar(x)", "a.A"))
|
||||||
|
fun foo(x: Any) {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
<caret>foo(1)
|
||||||
|
}
|
||||||
+10
@@ -2555,6 +2555,16 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes
|
|||||||
KotlinTestUtils.runTest(this::doTestWithExtraFile, TargetBackend.ANY, testDataFilePath);
|
KotlinTestUtils.runTest(this::doTestWithExtraFile, TargetBackend.ANY, testDataFilePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("addImportForCompanionObject.before.Main.kt")
|
||||||
|
public void testAddImportForCompanionObject() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/deprecatedSymbolUsage/imports/addImportForCompanionObject.before.Main.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("addImportForCompanionObject2.before.Main.kt")
|
||||||
|
public void testAddImportForCompanionObject2() throws Exception {
|
||||||
|
runTest("idea/testData/quickfix/deprecatedSymbolUsage/imports/addImportForCompanionObject2.before.Main.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("addImportForOperator.before.Main.kt")
|
@TestMetadata("addImportForOperator.before.Main.kt")
|
||||||
public void testAddImportForOperator() throws Exception {
|
public void testAddImportForOperator() throws Exception {
|
||||||
runTest("idea/testData/quickfix/deprecatedSymbolUsage/imports/addImportForOperator.before.Main.kt");
|
runTest("idea/testData/quickfix/deprecatedSymbolUsage/imports/addImportForOperator.before.Main.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user