From 1ae9fa197adfff25282e3cd9bbfb516652f27dc0 Mon Sep 17 00:00:00 2001 From: Dave Griffith Date: Wed, 2 Feb 2005 00:02:49 +0300 Subject: [PATCH] (no message) --- .../confusing/NestedSwitchStatementInspection.java | 14 ++++++++++++-- .../ig/performance/InnerClassReferenceVisitor.java | 10 ++++++++++ .../src/com/siyeh/ig/psiutils/ClassUtils.java | 6 +++++- .../NestedSynchronizedStatementInspection.java | 11 ++++++++++- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/confusing/NestedSwitchStatementInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/confusing/NestedSwitchStatementInspection.java index 751d76501b4f..b63aaa1b4c82 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/confusing/NestedSwitchStatementInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/confusing/NestedSwitchStatementInspection.java @@ -3,11 +3,13 @@ package com.siyeh.ig.confusing; import com.intellij.codeInspection.InspectionManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiSwitchStatement; +import com.intellij.psi.PsiMethod; import com.intellij.psi.util.PsiTreeUtil; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.GroupNames; import com.siyeh.ig.StatementInspection; +import com.siyeh.ig.psiutils.ClassUtils; public class NestedSwitchStatementInspection extends StatementInspection { @@ -34,12 +36,20 @@ public class NestedSwitchStatementInspection extends StatementInspection { public void visitSwitchStatement(PsiSwitchStatement statement) { super.visitSwitchStatement(statement); - if (PsiTreeUtil.getParentOfType(statement, PsiSwitchStatement.class) == null) { + final PsiElement containingSwitchStatement = + PsiTreeUtil.getParentOfType(statement, PsiSwitchStatement.class); + if (containingSwitchStatement == null) { + return; + } + final PsiMethod containingMethod = ClassUtils.getContainingMethod(statement); + final PsiMethod containingContainingMethod = ClassUtils.getContainingMethod( + containingSwitchStatement); + if(!containingMethod.equals(containingContainingMethod)) + { return; } registerStatementError(statement); } - } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java index d8219ffeb847..dcea55c5b9bc 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java @@ -39,6 +39,16 @@ class InnerClassReferenceVisitor extends PsiRecursiveElementVisitor { return true; } + public void visitThisExpression(PsiThisExpression expression){ + super.visitThisExpression(expression); + final PsiJavaCodeReferenceElement qualifier = expression.getQualifier(); + if(qualifier == null) + { + return; + } + m_referencesStaticallyAccessible = false; + } + public void visitReferenceElement(PsiJavaCodeReferenceElement referenceElement) { super.visitReferenceElement(referenceElement); final PsiElement element = referenceElement.resolve(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java index 341b276e0f98..ff6c2c5745a6 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java @@ -87,7 +87,7 @@ public class ClassUtils { } public static boolean isIntegral(PsiType type) { - return (type != null) && ( + return (type != null) && ( type.equals(PsiType.LONG) || type.equals(PsiType.INT) || type.equals(PsiType.SHORT) || @@ -174,4 +174,8 @@ public class ClassUtils { } return outerClass; } + + public static PsiMethod getContainingMethod(PsiElement element){ + return (PsiMethod) PsiTreeUtil.getParentOfType(element, PsiMethod.class); + } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/NestedSynchronizedStatementInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/NestedSynchronizedStatementInspection.java index 41343b6afd5b..88169c946f32 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/NestedSynchronizedStatementInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/NestedSynchronizedStatementInspection.java @@ -2,12 +2,14 @@ package com.siyeh.ig.threading; import com.intellij.codeInspection.InspectionManager; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiSynchronizedStatement; import com.intellij.psi.util.PsiTreeUtil; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.GroupNames; import com.siyeh.ig.StatementInspection; +import com.siyeh.ig.psiutils.ClassUtils; public class NestedSynchronizedStatementInspection extends StatementInspection { @@ -34,7 +36,14 @@ public class NestedSynchronizedStatementInspection extends StatementInspection { public void visitSynchronizedStatement(PsiSynchronizedStatement statement) { super.visitSynchronizedStatement(statement); - if (PsiTreeUtil.getParentOfType(statement, PsiSynchronizedStatement.class) == null) { + final PsiElement containingSynchronizedStatement = + PsiTreeUtil.getParentOfType(statement, PsiSynchronizedStatement.class); + if(containingSynchronizedStatement == null){ + return; + } + final PsiMethod containingMethod = ClassUtils.getContainingMethod(statement); + final PsiMethod containingContainingMethod = ClassUtils.getContainingMethod(containingSynchronizedStatement); + if(!containingMethod.equals(containingContainingMethod)){ return; } registerStatementError(statement);