IDEA-92967 (Inspections / Imports / Unused Import: superfluous warning with both static and non-static elements importing)

This commit is contained in:
Bas Leijdekkers
2012-10-18 17:51:01 +02:00
parent f1a47ab52a
commit a2be6066cf
3 changed files with 20 additions and 6 deletions
@@ -44,14 +44,12 @@ class ImportsAreUsedVisitor extends JavaRecursiveElementVisitor {
}
@Override
public void visitReferenceElement(
@NotNull PsiJavaCodeReferenceElement reference) {
public void visitReferenceElement(@NotNull PsiJavaCodeReferenceElement reference) {
followReferenceToImport(reference);
super.visitReferenceElement(reference);
}
private void followReferenceToImport(
PsiJavaCodeReferenceElement reference) {
private void followReferenceToImport(PsiJavaCodeReferenceElement reference) {
if (reference.getQualifier() != null) {
// it's already fully qualified, so the import statement wasn't
// responsible
@@ -89,8 +87,14 @@ class ImportsAreUsedVisitor extends JavaRecursiveElementVisitor {
final String referenceName;
if (element instanceof PsiMember) {
final PsiMember member = (PsiMember)element;
referenceClass = member.getContainingClass();
referenceName = member.getName();
if (member instanceof PsiClass && !member.hasModifierProperty(PsiModifier.STATIC)) {
referenceClass = null;
referenceName = null;
}
else {
referenceClass = member.getContainingClass();
referenceName = member.getName();
}
}
else {
referenceClass = null;
@@ -4,4 +4,7 @@ public class Constants {
public static final int SIZE = 213;
private int field = 0; // I'm not an utility class.
public static void instanceMatMethod() {}
@SuppressWarnings("InnerClassMayBeStatic") public class InstanceInnerMaterial {}
}
@@ -6,6 +6,8 @@ import static java.lang.Math.*;
import static java.lang.Integer.SIZE;
import java.util.List;
import java.util.ArrayList;
import static com.siyeh.igtest.imports.unused.Constants.*;
import com.siyeh.igtest.imports.unused.Constants.*;
public class UnusedImport {
@@ -22,4 +24,9 @@ public class UnusedImport {
list.add(i);
Entry entry;
}
public void context() {
instanceMatMethod();
InstanceInnerMaterial innerMaterial = new Constants().new InstanceInnerMaterial();
}
}