disable import of static constant on type element/assignment place (IDEA-156162)

This commit is contained in:
Anna.Kozlova
2016-05-17 21:13:20 +02:00
parent cb6a738d36
commit d2136b76b2
3 changed files with 31 additions and 0 deletions
@@ -22,6 +22,7 @@ import com.intellij.psi.*;
import com.intellij.psi.search.PsiShortNamesCache;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.TypeConversionUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -58,6 +59,10 @@ public class StaticImportConstantFix extends StaticImportMemberFix<PsiField> {
final PsiJavaCodeReferenceElement element = myRef.getElement();
String name = element != null ? element.getReferenceName() : null;
if (name == null) return Collections.emptyList();
if (element instanceof PsiExpression && PsiUtil.isAccessedForWriting((PsiExpression)element) ||
element.getParent() instanceof PsiTypeElement) {
return Collections.emptyList();
}
final StaticMembersProcessor<PsiField> processor = new StaticMembersProcessor<PsiField>(element) {
@Override
protected boolean isApplicable(PsiField field, PsiElement place) {
@@ -0,0 +1,14 @@
// "Static import constant 'foo.B.K'" "false"
package foo;
public class X {
{
<caret>K = new X();
}
}
class B {
public static Object K = null;
}
@@ -0,0 +1,12 @@
// "Static import constant 'foo.B.K'" "false"
package foo;
public class X {
<caret>K foo() {}
}
class B {
public static Object K = null;
}