#KT-1426 Implement "Optimize Imports" in plugin - fixes for used reference search (look to calls and work with java type constructors.)

This commit is contained in:
Nikolay Krasko
2012-03-17 02:03:13 +04:00
parent 9c58e5b45c
commit 8088b770f7
4 changed files with 13 additions and 10 deletions
@@ -129,7 +129,7 @@ public class JetImportOptimizer implements ImportOptimizer {
@Override
public void visitReferenceExpression(JetReferenceExpression expression) {
if (PsiTreeUtil.getParentOfType(expression, JetQualifiedExpression.class) == null) {
if (PsiTreeUtil.getParentOfType(expression, JetImportDirective.class) == null) {
PsiReference reference = expression.getReference();
if (reference != null) {
List<PsiElement> references = new ArrayList<PsiElement>();
@@ -145,7 +145,7 @@ public class JetImportOptimizer implements ImportOptimizer {
}
for (PsiElement psiReference : references) {
FqName fqName = getElementFQName(psiReference);
FqName fqName = getElementUsageFQName(psiReference);
if (fqName != null) {
usedQualifiedNames.add(fqName);
}
@@ -163,7 +163,7 @@ public class JetImportOptimizer implements ImportOptimizer {
@Nullable
public static FqName getElementFQName(PsiElement element) {
public static FqName getElementUsageFQName(PsiElement element) {
if (element instanceof JetClassOrObject) {
return JetPsiUtil.getFQName((JetClassOrObject) element);
}
@@ -184,6 +184,10 @@ public class JetImportOptimizer implements ImportOptimizer {
if (containingClass != null) {
String classFQNStr = containingClass.getQualifiedName();
if (classFQNStr != null) {
if (method.isConstructor()) {
return new FqName(classFQNStr);
}
FqName classFQN = new FqName(classFQNStr);
if (classFQN.shortName().equals(JvmAbi.PACKAGE_CLASS)) {
return QualifiedNamesUtil.combine(classFQN.parent(), method.getName());
@@ -197,6 +201,4 @@ public class JetImportOptimizer implements ImportOptimizer {
return null;
}
}
@@ -4,10 +4,11 @@ import java.lang.StringBuilder
import java.net.HttpRetryException
import java.util.ArrayList
import kotlin.util.measureTimeMillis
import java.util.HashMap
class Action {
fun test() {
measureTimeMillis({ println("Some")})
measureTimeMillis({ println(HashMap<String, Int>().size()) })
val test : ArrayList<Int>? = null
}
}
@@ -1,9 +1,10 @@
import java.util.ArrayList
import java.util.HashMap
import kotlin.util.measureTimeMillis
class Action {
fun test() {
measureTimeMillis({ println("Some")})
measureTimeMillis({ println(HashMap<String, Int>().size()) })
val test : ArrayList<Int>? = null
}
}
@@ -98,8 +98,7 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase {
private static void invokeFormatFile() {
CommandProcessor.getInstance().executeCommand(
getProject(), new JetImportOptimizer().processFile(getFile()),
"Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION);
getProject(), new JetImportOptimizer().processFile(getFile()),
"Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION);
}
}