IDEA-76218 Allow "Show static members after instance qualifier" to depend on AccessStaticViaInstance

This commit is contained in:
peter
2011-11-02 18:14:13 +01:00
parent 746f1380a6
commit 32632b2072
5 changed files with 40 additions and 4 deletions

View File

@@ -18,6 +18,8 @@ package com.intellij.codeInsight.completion.scope;
import com.intellij.codeInsight.CodeInsightSettings;
import com.intellij.codeInsight.completion.CompletionUtil;
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
import com.intellij.codeInspection.SuppressManager;
import com.intellij.codeInspection.accessStaticViaInstance.AccessStaticViaInstance;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.text.StringUtil;
@@ -52,7 +54,6 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
private final List<CompletionElement> myResults;
private final PsiElement myElement;
private final PsiElement myScope;
private CodeInsightSettings mySettings = null;
private final ElementFilter myFilter;
private boolean myMembersFlag = false;
private PsiType myQualifierType = null;
@@ -60,10 +61,10 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
private final Condition<String> myMatcher;
private final boolean myCheckAccess;
private final Set<PsiField> myNonInitializedFields = new HashSet<PsiField>();
private boolean myAllowStaticWithInstanceQualifier;
public JavaCompletionProcessor(PsiElement element, ElementFilter filter, final boolean checkAccess, boolean checkInitialized, @Nullable Condition<String> nameCondition) {
myCheckAccess = checkAccess;
mySettings = CodeInsightSettings.getInstance();
myResults = new ArrayList<CompletionElement>();
myElement = element;
myMatcher = nameCondition;
@@ -108,6 +109,11 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
if (checkInitialized) {
myNonInitializedFields.addAll(getNonInitializedFields(element));
}
myAllowStaticWithInstanceQualifier = CodeInsightSettings.getInstance().SHOW_STATIC_AFTER_INSTANCE ||
SuppressManager.getInstance()
.isSuppressedFor(element, AccessStaticViaInstance.ACCESS_STATIC_VIA_INSTANCE);
}
private static boolean isInitializedImplicitly(PsiField field) {
@@ -202,7 +208,7 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
}
}
else {
if (!mySettings.SHOW_STATIC_AFTER_INSTANCE
if (!myAllowStaticWithInstanceQualifier
&& modifierListOwner.hasModifierProperty(PsiModifier.STATIC)
&& !myMembersFlag) {
// according settings we don't need to process such fields/methods

View File

@@ -31,6 +31,9 @@ import org.jetbrains.annotations.NotNull;
* Date: 15-Nov-2005
*/
public class AccessStaticViaInstance extends BaseJavaLocalInspectionTool {
public static final String ACCESS_STATIC_VIA_INSTANCE = "AccessStaticViaInstance";
@NotNull
public String getGroupDisplayName() {
return "";
@@ -44,7 +47,7 @@ public class AccessStaticViaInstance extends BaseJavaLocalInspectionTool {
@NotNull
@NonNls
public String getShortName() {
return "AccessStaticViaInstance";
return ACCESS_STATIC_VIA_INSTANCE;
}
public boolean isEnabledByDefault() {

View File

@@ -0,0 +1,10 @@
@SuppressWarnings("AccessStaticViaInstance")
public class KeyVO {
{
new Cli().fo<caret>
}
}
class Cli {
static void foo() {}
}

View File

@@ -0,0 +1,10 @@
@SuppressWarnings("AccessStaticViaInstance")
public class KeyVO {
{
new Cli().foo();<caret>
}
}
class Cli {
static void foo() {}
}

View File

@@ -461,6 +461,13 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase {
}
public void testBreakInIfCondition() throws Throwable { doTest(); }
public void testAccessStaticViaInstance() throws Throwable { doTest(); }
public void _testAccessStaticViaInstanceSecond() throws Throwable {
doAntiTest()
complete()
checkResult()
}
public void testNoThisInComment() throws Throwable { doAntiTest() }