mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 06:05:01 +07:00
reference to static method from interface: prefer static import context if provided (IDEA-130136)
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.psi.util;
|
||||
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.psi.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -79,4 +80,29 @@ public class ImportsUtil {
|
||||
refExpr.replace(elementFactory.createReferenceFromText(referenceExpression.getText() + "." + refExpr.getText(), refExpr));
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean hasStaticImportOn(final PsiElement expr, final PsiMember member, boolean acceptOnDemand) {
|
||||
if (expr.getContainingFile() instanceof PsiJavaFile) {
|
||||
final PsiImportList importList = ((PsiJavaFile)expr.getContainingFile()).getImportList();
|
||||
if (importList != null) {
|
||||
final PsiImportStaticStatement[] importStaticStatements = importList.getImportStaticStatements();
|
||||
for (PsiImportStaticStatement stmt : importStaticStatements) {
|
||||
final PsiClass containingClass = member.getContainingClass();
|
||||
final String referenceName = stmt.getReferenceName();
|
||||
if (containingClass != null && stmt.resolveTargetClass() == containingClass) {
|
||||
if (!stmt.isOnDemand() && Comparing.strEqual(referenceName, member.getName())) {
|
||||
if (member instanceof PsiMethod) {
|
||||
return containingClass.findMethodsByName(referenceName, false).length == 1;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (acceptOnDemand && stmt.isOnDemand()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user