Hopefully, all of unnecessary getElement() calls are gone

This commit is contained in:
Maxim Shafirov
2012-04-13 21:05:18 +04:00
parent 2e35fe79e0
commit d6c521502f
14 changed files with 19 additions and 52 deletions
@@ -47,7 +47,7 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
if (refElement instanceof RefClass) {
final RefClass refClass = (RefClass)refElement;
final PsiClass psiClass = refClass.getElement();
if (RefUtil.isEntryPoint(refClass)) {
if (refClass.isEntry()) {
((RefClassImpl)refClass).setFlag(false, CAN_BE_FINAL_MASK);
return;
}
@@ -115,7 +115,7 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
final PsiClass psiClass = (PsiClass)refElement.getElement();
if (psiClass != null) {
if (RefUtil.isEntryPoint(refElement)) {
if (refElement.isEntry()) {
((RefClassImpl)refElement).setFlag(false, CAN_BE_FINAL_MASK);
}
@@ -205,11 +205,8 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
}
else if (refElement instanceof RefMethod) {
final RefMethod refMethod = (RefMethod)refElement;
final PsiElement element = refMethod.getElement();
if (element instanceof PsiMethod) {
if (RefUtil.isEntryPoint(refMethod)) {
((RefMethodImpl)refMethod).setFlag(false, CAN_BE_FINAL_MASK);
}
if (refMethod.isEntry()) {
((RefMethodImpl)refMethod).setFlag(false, CAN_BE_FINAL_MASK);
}
}
}
@@ -25,12 +25,8 @@
package com.intellij.codeInspection.deadCode;
import com.intellij.codeInspection.ex.InspectionTool;
import com.intellij.codeInspection.reference.RefElementImpl;
import com.intellij.codeInspection.reference.RefJavaElement;
import com.intellij.codeInspection.reference.RefParameter;
import com.intellij.codeInspection.reference.*;
import com.intellij.codeInspection.util.RefFilter;
import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiElement;
public class RefUnreachableFilter extends RefFilter {
protected InspectionTool myTool;
@@ -42,8 +38,8 @@ public class RefUnreachableFilter extends RefFilter {
public int getElementProblemCount(RefJavaElement refElement) {
if (refElement instanceof RefParameter) return 0;
if (refElement.isSyntheticJSP()) return 0;
final PsiElement element = refElement.getElement();
if (!(element instanceof PsiDocCommentOwner) || !myTool.getContext().isToCheckMember(refElement, myTool)) return 0;
if (!(refElement instanceof RefMethod || refElement instanceof RefClass || refElement instanceof RefField)) return 0;
if (!myTool.getContext().isToCheckMember(refElement, myTool)) return 0;
return ((RefElementImpl)refElement).isSuspicious() ? 1 : 0;
}
}
@@ -26,8 +26,6 @@ package com.intellij.codeInspection.deadCode;
import com.intellij.codeInspection.ex.InspectionTool;
import com.intellij.codeInspection.reference.*;
import com.intellij.psi.PsiDocCommentOwner;
import com.intellij.psi.PsiElement;
public class UnreferencedFilter extends RefUnreachableFilter {
public UnreferencedFilter(final InspectionTool tool) {
@@ -38,8 +36,8 @@ public class UnreferencedFilter extends RefUnreachableFilter {
if (refElement instanceof RefParameter) return 0;
if (refElement.isEntry() || !((RefElementImpl)refElement).isSuspicious() || refElement.isSyntheticJSP()) return 0;
final PsiElement element = refElement.getElement();
if (!(element instanceof PsiDocCommentOwner) || !myTool.getContext().isToCheckMember(refElement, myTool)) return 0;
if (!(refElement instanceof RefMethod || refElement instanceof RefClass || refElement instanceof RefField)) return 0;
if (!myTool.getContext().isToCheckMember(refElement, myTool)) return 0;
if (refElement instanceof RefField) {
RefField refField = (RefField) refElement;
@@ -176,7 +176,6 @@ public class RefClassImpl extends RefJavaElementImpl implements RefClass {
final PsiClass applet = getRefJavaManager().getApplet();
setApplet(applet != null && psiClass.isInheritor(applet, true));
getRefManager().fireNodeInitialized(this);
PsiManager psiManager = getRefManager().getPsiManager();
psiManager.dropResolveCaches();
PsiFile file = psiClass.getContainingFile();
@@ -187,6 +187,5 @@ public class RefFieldImpl extends RefJavaElementImpl implements RefField {
}
protected void initialize() {
getRefManager().fireNodeInitialized(this);
}
}
@@ -127,7 +127,6 @@ public class RefMethodImpl extends RefJavaElementImpl implements RefMethod {
updateThrowsList(null);
}
collectUncaughtExceptions(method);
getRefManager().fireNodeInitialized(this);
}
private static boolean isAppMain(PsiMethod psiMethod, RefMethod refMethod) {
@@ -127,7 +127,6 @@ public class RefParameterImpl extends RefJavaElementImpl implements RefParameter
}
protected void initialize() {
getRefManager().fireNodeInitialized(this);
}
public String getExternalName() {
@@ -79,7 +79,7 @@ public class UnusedParametersInspection extends GlobalJavaInspectionTool {
if (unusedParameters.isEmpty()) return null;
if (RefUtil.isEntryPoint(refMethod)) return null;
if (refMethod.isEntry()) return null;
final PsiModifierListOwner element = refMethod.getElement();
if (element != null && EntryPointsManagerImpl.getInstance(manager.getProject()).isEntryPoint(element)) return null;
@@ -158,13 +158,13 @@ public class VisibilityInspection extends GlobalJavaInspectionTool {
if (refElement instanceof RefMethod) {
RefMethod refMethod = (RefMethod) refElement;
if (refMethod.isExternalOverride()) return null;
if (RefUtil.isEntryPoint(refMethod)) return null;
if (refMethod.isEntry()) return null;
}
//ignore anonymous classes. They do not have access modifiers.
if (refElement instanceof RefClass) {
RefClass refClass = (RefClass) refElement;
if (refClass.isAnonymous() || RefUtil.isEntryPoint(refClass) || refClass.isTestCase() || refClass.isServlet() || refClass.isApplet() || refClass.isLocalClass()) return null;
if (refClass.isAnonymous() || refClass.isEntry() || refClass.isTestCase() || refClass.isServlet() || refClass.isApplet() || refClass.isLocalClass()) return null;
if (isTopLevelClass(refClass) && !SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES) return null;
}
@@ -15,11 +15,8 @@
*/
package com.intellij.codeInspection.reference;
import com.intellij.ExtensionPoints;
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.extensions.ExtensionPoint;
import com.intellij.psi.PsiElement;
/**
@@ -29,21 +26,8 @@ import com.intellij.psi.PsiElement;
* @author anna
* @since 6.0
*/
public abstract class RefUtil {
public static RefUtil getInstance() {
return ServiceManager.getService(RefUtil.class);
}
public static boolean isEntryPoint(final RefElement refElement) {
final PsiElement element = refElement.getElement();
final ExtensionPoint<EntryPoint> point = Extensions.getRootArea().getExtensionPoint(ExtensionPoints.DEAD_CODE_TOOL);
for (EntryPoint entryPoint : point.getExtensions()) {
if (entryPoint.isEntryPoint(refElement, element)) {
return true;
}
}
return isImplicitUsage(element);
}
public class RefUtil {
private RefUtil() {}
public static boolean isImplicitUsage(PsiElement element) {
final ImplicitUsageProvider[] implicitUsageProviders = Extensions.getExtensions(ImplicitUsageProvider.EP_NAME);
@@ -25,7 +25,6 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiManager;
public class RefDirectoryImpl extends RefElementImpl implements RefDirectory{
protected RefDirectoryImpl(PsiDirectory psiElement, RefManager refManager) {
@@ -58,7 +57,6 @@ public class RefDirectoryImpl extends RefElementImpl implements RefDirectory{
}
protected void initialize() {
getRefManager().fireNodeInitialized(this);
}
public String getQualifiedName() {
@@ -70,4 +68,4 @@ public class RefDirectoryImpl extends RefElementImpl implements RefDirectory{
assert element != null;
return ((PsiDirectory)element).getVirtualFile().getPath();
}
}
}
@@ -60,7 +60,6 @@ public class RefFileImpl extends RefElementImpl implements RefFile {
}
protected void initialize() {
getRefManager().fireNodeInitialized(this);
}
@Nullable
@@ -447,6 +447,7 @@ public class RefManagerImpl extends RefManager {
for (RefManagerExtension extension : myExtensions.values()) {
extension.onEntityInitialized(refElement, elem);
}
fireNodeInitialized(refElement);
}
});
@@ -21,13 +21,12 @@ import com.intellij.codeInspection.GlobalInspectionContext;
import com.intellij.codeInspection.InspectionManager;
import com.intellij.codeInspection.ProblemDescriptionsProcessor;
import com.intellij.codeInspection.reference.RefClass;
import com.intellij.codeInspection.reference.RefFile;
import com.intellij.codeInspection.reference.RefJavaVisitor;
import com.intellij.codeInspection.reference.RefManager;
import com.intellij.codeInspection.ui.SingleIntegerFieldOptionsPanel;
import com.intellij.psi.PsiClass;
import com.siyeh.InspectionGadgetsBundle;
import com.siyeh.ig.BaseGlobalInspection;
import com.siyeh.ig.psiutils.ClassUtils;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
@@ -58,8 +57,7 @@ public class ClassWithTooManyDependenciesInspection
@Override
public void visitClass(RefClass refClass) {
super.visitClass(refClass);
final PsiClass aClass = refClass.getElement();
if (ClassUtils.isInnerClass(aClass)) {
if (!(refClass.getOwner() instanceof RefFile)) {
return;
}
final Set<RefClass> dependencies =
@@ -85,4 +83,4 @@ public class ClassWithTooManyDependenciesInspection
"class.with.too.many.dependencies.max.option"),
this, "limit");
}
}
}