From 415445c4bd596b4e749ecaa13ac04d3ed76d469f Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Thu, 16 Mar 2023 10:38:57 +0100 Subject: [PATCH] [java-inspections] IDEA-315406 "Field may be static" false positive GitOrigin-RevId: 4ef30cb64f236cc976ad3573d14388121c4bdb94 --- .../com/siyeh/ig/performance/CanBeStaticVisitor.java | 10 +++++++--- .../field_may_be_static/FieldMayBeStatic.java | 7 ++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/CanBeStaticVisitor.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/CanBeStaticVisitor.java index 4dc99003a919..7459f2493953 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/CanBeStaticVisitor.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/performance/CanBeStaticVisitor.java @@ -29,11 +29,14 @@ class CanBeStaticVisitor extends JavaRecursiveElementWalkingVisitor { } } + @Override + public void visitThisExpression(@NotNull PsiThisExpression expression) { + canBeStatic = false; + stopWalking(); + } + @Override public void visitReferenceExpression(@NotNull PsiReferenceExpression ref) { - if (!canBeStatic) { - return; - } super.visitReferenceExpression(ref); PsiElement element = ref.resolve(); @@ -41,6 +44,7 @@ class CanBeStaticVisitor extends JavaRecursiveElementWalkingVisitor { !owner.hasModifierProperty(PsiModifier.STATIC) && !(owner instanceof PsiClass cls && ClassUtil.isTopLevelClass(cls))) { canBeStatic = false; + stopWalking(); } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/performance/field_may_be_static/FieldMayBeStatic.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/performance/field_may_be_static/FieldMayBeStatic.java index e826bdcd7db6..0a8f09d878e9 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/performance/field_may_be_static/FieldMayBeStatic.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/performance/field_may_be_static/FieldMayBeStatic.java @@ -66,4 +66,9 @@ class Outer { }.run(); } -} \ No newline at end of file +} +class ThisExpression { + private final boolean test = this instanceof Sub; + + static class Sub extends ThisExpression {} +}