KT-8961 Optimize Imports adds useless import for static Java method reference

#KT-8961 Fixed
This commit is contained in:
Valentin Kipyatkov
2015-10-18 11:52:16 +03:00
parent b62260180f
commit edd2d853b1
4 changed files with 20 additions and 3 deletions
@@ -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.core.formatter.JetCodeStyleSettings
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.application.runWriteAction
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
import org.jetbrains.kotlin.renderer.render
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 (element !is JetNameReferenceExpression) continue
if (element.getIdentifier() == null) continue // skip 'this' etc
if (element.getReceiverExpression() != null) continue
if (CallTypeAndReceiver.detect(element).receiver != null) continue
}
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);
}
@TestMetadata("CallableReference.kt")
public void testCallableReference() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/CallableReference.kt");
doTest(fileName);
}
@TestMetadata("ClassFromSameFileImportAddedBug.kt")
public void testClassFromSameFileImportAddedBug() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/ClassFromSameFileImportAddedBug.kt");