KT-8961 Optimize Imports adds useless import for static Java method reference
#KT-8961 Fixed
This commit is contained in:
@@ -29,13 +29,13 @@ import org.jetbrains.kotlin.idea.caches.resolve.getFileTopLevelScope
|
|||||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.core.formatter.JetCodeStyleSettings
|
import org.jetbrains.kotlin.idea.core.formatter.JetCodeStyleSettings
|
||||||
import org.jetbrains.kotlin.idea.references.JetReference
|
import org.jetbrains.kotlin.idea.references.JetReference
|
||||||
|
import org.jetbrains.kotlin.idea.util.CallTypeAndReceiver
|
||||||
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||||
import org.jetbrains.kotlin.renderer.render
|
import org.jetbrains.kotlin.renderer.render
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
@@ -105,8 +105,7 @@ public class KotlinImportOptimizer() : ImportOptimizer {
|
|||||||
|
|
||||||
if (!target.isExtension) { // for non-extension targets, count only non-qualified simple name usages
|
if (!target.isExtension) { // for non-extension targets, count only non-qualified simple name usages
|
||||||
if (element !is JetNameReferenceExpression) continue
|
if (element !is JetNameReferenceExpression) continue
|
||||||
if (element.getIdentifier() == null) continue // skip 'this' etc
|
if (CallTypeAndReceiver.detect(element).receiver != null) continue
|
||||||
if (element.getReceiverExpression() != null) continue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val importableDescriptor = target.getImportableDescriptor()
|
val importableDescriptor = target.getImportableDescriptor()
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import javax.swing.SwingUtilities.invokeLater
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
val ref1 = Thread::currentThread
|
||||||
|
val ref2 = ::invokeLater
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import javax.swing.SwingUtilities.invokeLater
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
val ref1 = Thread::currentThread
|
||||||
|
val ref2 = ::invokeLater
|
||||||
|
}
|
||||||
@@ -47,6 +47,12 @@ public class OptimizeImportsTestGenerated extends AbstractOptimizeImportsTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("CallableReference.kt")
|
||||||
|
public void testCallableReference() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/CallableReference.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("ClassFromSameFileImportAddedBug.kt")
|
@TestMetadata("ClassFromSameFileImportAddedBug.kt")
|
||||||
public void testClassFromSameFileImportAddedBug() throws Exception {
|
public void testClassFromSameFileImportAddedBug() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user