Optimization: hierarchical signatures build only for non-static methods (1 sec on toString())

This commit is contained in:
Andrey Breslav
2013-04-23 17:35:42 +04:00
parent 7b602d4dd7
commit bd4d6c810f
2 changed files with 5 additions and 0 deletions
@@ -29,6 +29,7 @@ import java.util.List;
class JavaMethodSignatureUtil {
// This and following methods are originally from com.intellij.codeInsight.daemon.impl.analysis.HighlightMethodUtil
static boolean isMethodReturnTypeCompatible(@NotNull PsiMethod method) {
if (method.hasModifierProperty(PsiModifier.STATIC)) return true;
HierarchicalMethodSignature methodSignature = method.getHierarchicalMethodSignature();
List<HierarchicalMethodSignature> superSignatures = methodSignature.getSuperSignatures();
@@ -90,6 +90,10 @@ public class RawTypesCheck {
}
static boolean hasRawTypesInHierarchicalSignature(@NotNull PsiMethod method) {
// This is a very important optimization: package-classes are big and full of static methods
// building method hierarchies for such classes takes a very long time
if (method.hasModifierProperty(PsiModifier.STATIC)) return false;
if (hasRawTypesInSignature(method)) {
return true;
}