From d2136b76b23eaab3f8476a118fd8e3f6c4765521 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 17 May 2016 20:44:39 +0200 Subject: [PATCH] disable import of static constant on type element/assignment place (IDEA-156162) --- .../impl/quickfix/StaticImportConstantFix.java | 5 +++++ .../beforeConstantOnTheLeftSideOfAssignment.java | 14 ++++++++++++++ .../beforeConstantOnTypeElementPlace.java | 12 ++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTheLeftSideOfAssignment.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTypeElementPlace.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportConstantFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportConstantFix.java index 4259710aa2c5..d2a1819c2125 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportConstantFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportConstantFix.java @@ -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 { 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 processor = new StaticMembersProcessor(element) { @Override protected boolean isApplicable(PsiField field, PsiElement place) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTheLeftSideOfAssignment.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTheLeftSideOfAssignment.java new file mode 100644 index 000000000000..da6176f5338c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTheLeftSideOfAssignment.java @@ -0,0 +1,14 @@ +// "Static import constant 'foo.B.K'" "false" +package foo; + +public class X { + + { + K = new X(); + } + +} + +class B { + public static Object K = null; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTypeElementPlace.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTypeElementPlace.java new file mode 100644 index 000000000000..cb6dbc5b3785 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/staticImportConstant/beforeConstantOnTypeElementPlace.java @@ -0,0 +1,12 @@ +// "Static import constant 'foo.B.K'" "false" +package foo; + +public class X { + + K foo() {} + +} + +class B { + public static Object K = null; +} \ No newline at end of file