From 502ee8d8d1d6fe3827873475575828613ac5a0f7 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 13 Jan 2005 15:53:35 +0300 Subject: [PATCH] merged CVS and Subversion versions --- .../ig/abstraction/ClassAccessVisitor.java | 6 +++++- .../ClassReferencesSubclassInspection.java | 4 ++-- .../OverlyStrongTypeCastInspection.java | 17 ++++++++++++++--- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassAccessVisitor.java b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassAccessVisitor.java index 489ec231e2e5..ccbd0d602bd7 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassAccessVisitor.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassAccessVisitor.java @@ -39,8 +39,12 @@ class ClassAccessVisitor extends PsiRecursiveElementVisitor { if (currentClass.equals(calledClass)) { return; } - if (currentClass.isInheritor(calledClass, true)) { + PsiClass lexicallyEnclosingClass = currentClass; + while (lexicallyEnclosingClass != null) { + if (lexicallyEnclosingClass.isInheritor(calledClass, true)) { return; + } + lexicallyEnclosingClass = (PsiClass)PsiTreeUtil.getParentOfType(lexicallyEnclosingClass, PsiClass.class); } if (PsiTreeUtil.isAncestor(currentClass, calledClass, true)) { return; diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassReferencesSubclassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassReferencesSubclassInspection.java index 9e6a490f0a32..cf4911b21d1e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassReferencesSubclassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/ClassReferencesSubclassInspection.java @@ -19,9 +19,9 @@ public class ClassReferencesSubclassInspection extends ClassInspection { return GroupNames.ABSTRACTION_GROUP_NAME; } - public String buildErrorString(PsiElement classRef) { + public String buildErrorString(PsiElement location) { final PsiClass containingClass = - ClassUtils.getContainingClass(classRef); + ClassUtils.getContainingClass(location); final String containingClassName = containingClass.getName(); return "Class " + containingClassName + " references subclass #ref #loc"; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java index 1d91fbb33ab7..6dea6c89dd37 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java @@ -10,7 +10,8 @@ import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.ExpectedTypeUtils; public class OverlyStrongTypeCastInspection extends ExpressionInspection { - private final OverlyStringCastFix fix = new OverlyStringCastFix(); + + private final OverlyStrongCastFix fix = new OverlyStrongCastFix(); public String getDisplayName() { return "Overly-strong type cast"; @@ -28,7 +29,7 @@ public class OverlyStrongTypeCastInspection extends ExpressionInspection { return fix; } - private static class OverlyStringCastFix extends InspectionGadgetsFix { + private static class OverlyStrongCastFix extends InspectionGadgetsFix { public String getName() { return "Weaken overly-strong cast"; } @@ -79,10 +80,20 @@ public class OverlyStrongTypeCastInspection extends ExpressionInspection { if (expectedType.equals(type)) { return; } + if (expectedType.getCanonicalText().equals("_Dummy_.__Array__")) { + return; + } if (expectedType.isAssignableFrom(operandType)) { return; //then it's redundant, and caught by the built-in exception } - + if(expectedType instanceof PsiClassType) + { + final PsiClass aClass = ((PsiClassType) expectedType).resolve(); + if(aClass.getContext() instanceof PsiTypeParameterList) + { + return; + } + } if (ClassUtils.isPrimitiveNumericType(type) || ClassUtils.isPrimitiveNumericType(expectedType)) { return;