#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:
@@ -129,7 +129,7 @@ public class JetImportOptimizer implements ImportOptimizer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitReferenceExpression(JetReferenceExpression expression) {
|
public void visitReferenceExpression(JetReferenceExpression expression) {
|
||||||
if (PsiTreeUtil.getParentOfType(expression, JetQualifiedExpression.class) == null) {
|
if (PsiTreeUtil.getParentOfType(expression, JetImportDirective.class) == null) {
|
||||||
PsiReference reference = expression.getReference();
|
PsiReference reference = expression.getReference();
|
||||||
if (reference != null) {
|
if (reference != null) {
|
||||||
List<PsiElement> references = new ArrayList<PsiElement>();
|
List<PsiElement> references = new ArrayList<PsiElement>();
|
||||||
@@ -145,7 +145,7 @@ public class JetImportOptimizer implements ImportOptimizer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (PsiElement psiReference : references) {
|
for (PsiElement psiReference : references) {
|
||||||
FqName fqName = getElementFQName(psiReference);
|
FqName fqName = getElementUsageFQName(psiReference);
|
||||||
if (fqName != null) {
|
if (fqName != null) {
|
||||||
usedQualifiedNames.add(fqName);
|
usedQualifiedNames.add(fqName);
|
||||||
}
|
}
|
||||||
@@ -163,7 +163,7 @@ public class JetImportOptimizer implements ImportOptimizer {
|
|||||||
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static FqName getElementFQName(PsiElement element) {
|
public static FqName getElementUsageFQName(PsiElement element) {
|
||||||
if (element instanceof JetClassOrObject) {
|
if (element instanceof JetClassOrObject) {
|
||||||
return JetPsiUtil.getFQName((JetClassOrObject) element);
|
return JetPsiUtil.getFQName((JetClassOrObject) element);
|
||||||
}
|
}
|
||||||
@@ -184,6 +184,10 @@ public class JetImportOptimizer implements ImportOptimizer {
|
|||||||
if (containingClass != null) {
|
if (containingClass != null) {
|
||||||
String classFQNStr = containingClass.getQualifiedName();
|
String classFQNStr = containingClass.getQualifiedName();
|
||||||
if (classFQNStr != null) {
|
if (classFQNStr != null) {
|
||||||
|
if (method.isConstructor()) {
|
||||||
|
return new FqName(classFQNStr);
|
||||||
|
}
|
||||||
|
|
||||||
FqName classFQN = new FqName(classFQNStr);
|
FqName classFQN = new FqName(classFQNStr);
|
||||||
if (classFQN.shortName().equals(JvmAbi.PACKAGE_CLASS)) {
|
if (classFQN.shortName().equals(JvmAbi.PACKAGE_CLASS)) {
|
||||||
return QualifiedNamesUtil.combine(classFQN.parent(), method.getName());
|
return QualifiedNamesUtil.combine(classFQN.parent(), method.getName());
|
||||||
@@ -197,6 +201,4 @@ public class JetImportOptimizer implements ImportOptimizer {
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,11 @@ import java.lang.StringBuilder
|
|||||||
import java.net.HttpRetryException
|
import java.net.HttpRetryException
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
import kotlin.util.measureTimeMillis
|
import kotlin.util.measureTimeMillis
|
||||||
|
import java.util.HashMap
|
||||||
|
|
||||||
class Action {
|
class Action {
|
||||||
fun test() {
|
fun test() {
|
||||||
measureTimeMillis({ println("Some")})
|
measureTimeMillis({ println(HashMap<String, Int>().size()) })
|
||||||
val test : ArrayList<Int>? = null
|
val test : ArrayList<Int>? = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
import java.util.HashMap
|
||||||
import kotlin.util.measureTimeMillis
|
import kotlin.util.measureTimeMillis
|
||||||
|
|
||||||
class Action {
|
class Action {
|
||||||
fun test() {
|
fun test() {
|
||||||
measureTimeMillis({ println("Some")})
|
measureTimeMillis({ println(HashMap<String, Int>().size()) })
|
||||||
val test : ArrayList<Int>? = null
|
val test : ArrayList<Int>? = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -98,8 +98,7 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase {
|
|||||||
|
|
||||||
private static void invokeFormatFile() {
|
private static void invokeFormatFile() {
|
||||||
CommandProcessor.getInstance().executeCommand(
|
CommandProcessor.getInstance().executeCommand(
|
||||||
getProject(), new JetImportOptimizer().processFile(getFile()),
|
getProject(), new JetImportOptimizer().processFile(getFile()),
|
||||||
"Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION);
|
"Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user