From 3386ef1571c032b4503d2051e7204b7d16cb763c Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 12 Sep 2008 15:12:41 +0400 Subject: [PATCH] IDEADEV-30082 (Another "Field may be final" inspection false positive) --- .../src/com/siyeh/ig/style/FieldMayBeFinalInspection.java | 11 +++++++++++ .../com/siyeh/igtest/style/field_final/FieldMayBeFinal.java | 11 ++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/FieldMayBeFinalInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/FieldMayBeFinalInspection.java index 466704f1bd..de265f005a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/FieldMayBeFinalInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/FieldMayBeFinalInspection.java @@ -104,6 +104,9 @@ public class FieldMayBeFinalInspection extends BaseInspection { } final PsiMethod[] methods = aClass.getMethods(); for (PsiMethod method : methods) { + if (method.hasModifierProperty(PsiModifier.STATIC)) { + continue; + } if (method.isConstructor() && !assignedInInitializer) { if (!VariableAccessUtils.variableIsAssigned(field, method, false)) { @@ -166,6 +169,14 @@ public class FieldMayBeFinalInspection extends BaseInspection { return false; } } + final PsiElement[] children = aClass.getChildren(); + final ClassVisitor visitor = new ClassVisitor(field); + for (PsiElement child : children) { + child.accept(visitor); + if (visitor.isVariableAssignedInClass()) { + return false; + } + } return true; } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java index 7b7f18edcc..f67519d977 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java @@ -1,5 +1,5 @@ package com.siyeh.igtest.style.field_final; - +import java.awt.*; import java.awt.event.KeyEvent; public class FieldMayBeFinal { private static String string; @@ -71,4 +71,13 @@ public class FieldMayBeFinal { } } + + private static boolean flag = true; + + private static final KeyEventPostProcessor processor = new KeyEventPostProcessor() { + public boolean postProcessKeyEvent(KeyEvent event) { + flag = event.isAltDown(); + return false; + } + }; } \ No newline at end of file -- 2.11.4.GIT