2222import com .siyeh .ig .InspectionGadgetsFix ;
2323import com .siyeh .ig .psiutils .VariableAccessUtils ;
2424import com .siyeh .localize .InspectionGadgetsLocalize ;
25+ import consulo .annotation .access .RequiredReadAction ;
2526import consulo .annotation .component .ExtensionImpl ;
2627import consulo .language .psi .PsiElement ;
2728import consulo .language .psi .util .PsiTreeUtil ;
3031import jakarta .annotation .Nullable ;
3132
3233import javax .swing .*;
33- import javax .swing .event .ChangeEvent ;
34- import javax .swing .event .ChangeListener ;
3534import java .awt .*;
3635
3736@ ExtensionImpl
@@ -51,11 +50,12 @@ public LocalizeValue getDisplayName() {
5150 return InspectionGadgetsLocalize .unnecessaryFinalOnLocalVariableOrParameterDisplayName ();
5251 }
5352
54- @ Override
5553 @ Nonnull
54+ @ Override
55+ @ RequiredReadAction
5656 public String buildErrorString (Object ... infos ) {
57- final PsiVariable variable = (PsiVariable ) infos [0 ];
58- final String variableName = variable .getName ();
57+ PsiVariable variable = (PsiVariable ) infos [0 ];
58+ String variableName = variable .getName ();
5959 return variable instanceof PsiParameter
6060 ? InspectionGadgetsLocalize .unnecessaryFinalOnParameterProblemDescriptor (variableName ).get ()
6161 : InspectionGadgetsLocalize .unnecessaryFinalOnLocalVariableProblemDescriptor (variableName ).get ();
@@ -64,8 +64,8 @@ public String buildErrorString(Object... infos) {
6464 @ Override
6565 @ Nullable
6666 public JComponent createOptionsPanel () {
67- final JPanel panel = new JPanel (new GridBagLayout ());
68- final JCheckBox abstractOnlyCheckBox =
67+ JPanel panel = new JPanel (new GridBagLayout ());
68+ JCheckBox abstractOnlyCheckBox =
6969 new JCheckBox (InspectionGadgetsLocalize .unnecessaryFinalOnParameterOnlyInterfaceOption ().get (), onlyWarnOnAbstractMethods ) {
7070 @ Override
7171 public void setEnabled (boolean b ) {
@@ -80,37 +80,26 @@ public void setEnabled(boolean b) {
8080 }
8181 };
8282 abstractOnlyCheckBox .setEnabled (true );
83- abstractOnlyCheckBox .addChangeListener (new ChangeListener () {
84- @ Override
85- public void stateChanged (ChangeEvent e ) {
86- onlyWarnOnAbstractMethods = abstractOnlyCheckBox .isSelected ();
87- }
88- });
89- final JCheckBox reportLocalVariablesCheckBox =
83+ abstractOnlyCheckBox .addChangeListener (e -> onlyWarnOnAbstractMethods = abstractOnlyCheckBox .isSelected ());
84+ JCheckBox reportLocalVariablesCheckBox =
9085 new JCheckBox (InspectionGadgetsLocalize .unnecessaryFinalReportLocalVariablesOption ().get (), reportLocalVariables );
91- final JCheckBox reportParametersCheckBox =
86+ JCheckBox reportParametersCheckBox =
9287 new JCheckBox (InspectionGadgetsLocalize .unnecessaryFinalReportParametersOption ().get (), reportParameters );
9388
94- reportLocalVariablesCheckBox .addChangeListener (new ChangeListener () {
95- @ Override
96- public void stateChanged (ChangeEvent e ) {
97- reportLocalVariables = reportLocalVariablesCheckBox .isSelected ();
98- if (!reportLocalVariables ) {
99- reportParametersCheckBox .setSelected (true );
100- }
89+ reportLocalVariablesCheckBox .addChangeListener (e -> {
90+ reportLocalVariables = reportLocalVariablesCheckBox .isSelected ();
91+ if (!reportLocalVariables ) {
92+ reportParametersCheckBox .setSelected (true );
10193 }
10294 });
103- reportParametersCheckBox .addChangeListener (new ChangeListener () {
104- @ Override
105- public void stateChanged (ChangeEvent e ) {
106- reportParameters = reportParametersCheckBox .isSelected ();
107- if (!reportParameters ) {
108- reportLocalVariablesCheckBox .setSelected (true );
109- }
110- abstractOnlyCheckBox .setEnabled (reportParameters );
95+ reportParametersCheckBox .addChangeListener (e -> {
96+ reportParameters = reportParametersCheckBox .isSelected ();
97+ if (!reportParameters ) {
98+ reportLocalVariablesCheckBox .setSelected (true );
11199 }
100+ abstractOnlyCheckBox .setEnabled (reportParameters );
112101 });
113- final GridBagConstraints constraints = new GridBagConstraints ();
102+ GridBagConstraints constraints = new GridBagConstraints ();
114103 constraints .anchor = GridBagConstraints .NORTHWEST ;
115104 constraints .fill = GridBagConstraints .HORIZONTAL ;
116105 constraints .weightx = 1.0 ;
@@ -136,47 +125,43 @@ public InspectionGadgetsFix buildFix(Object... infos) {
136125
137126 private class UnnecessaryFinalOnLocalVariableOrParameterVisitor extends BaseInspectionVisitor {
138127 @ Override
139- public void visitDeclarationStatement (PsiDeclarationStatement statement ) {
128+ public void visitDeclarationStatement (@ Nonnull PsiDeclarationStatement statement ) {
140129 super .visitDeclarationStatement (statement );
141130 if (!reportLocalVariables ) {
142131 return ;
143132 }
144- final PsiElement [] declaredElements = statement .getDeclaredElements ();
133+ PsiElement [] declaredElements = statement .getDeclaredElements ();
145134 if (declaredElements .length == 0 ) {
146135 return ;
147136 }
148- for (final PsiElement declaredElement : declaredElements ) {
149- if (!(declaredElement instanceof PsiLocalVariable )) {
150- return ;
151- }
152- final PsiLocalVariable variable = (PsiLocalVariable ) declaredElement ;
153- if (!variable .hasModifierProperty (PsiModifier .FINAL )) {
137+ for (PsiElement declaredElement : declaredElements ) {
138+ if (!(declaredElement instanceof PsiLocalVariable variable && variable .hasModifierProperty (PsiModifier .FINAL ))) {
154139 return ;
155140 }
156141 }
157- final PsiCodeBlock containingBlock = PsiTreeUtil .getParentOfType (statement , PsiCodeBlock .class );
142+ PsiCodeBlock containingBlock = PsiTreeUtil .getParentOfType (statement , PsiCodeBlock .class );
158143 if (containingBlock == null ) {
159144 return ;
160145 }
161146 for (PsiElement declaredElement : declaredElements ) {
162- final PsiLocalVariable variable = (PsiLocalVariable ) declaredElement ;
147+ PsiLocalVariable variable = (PsiLocalVariable ) declaredElement ;
163148 if (VariableAccessUtils .variableIsUsedInInnerClass (variable , containingBlock )) {
164149 return ;
165150 }
166151 }
167- final PsiLocalVariable variable = (PsiLocalVariable ) statement .getDeclaredElements ()[0 ];
152+ PsiLocalVariable variable = (PsiLocalVariable ) statement .getDeclaredElements ()[0 ];
168153 registerModifierError (PsiModifier .FINAL , variable , variable , PsiModifier .FINAL );
169154 }
170155
171156 @ Override
172- public void visitMethod (PsiMethod method ) {
157+ public void visitMethod (@ Nonnull PsiMethod method ) {
173158 super .visitMethod (method );
174159 if (!reportParameters ) {
175160 return ;
176161 }
177- final PsiParameterList parameterList = method .getParameterList ();
178- final PsiParameter [] parameters = parameterList .getParameters ();
179- for (final PsiParameter parameter : parameters ) {
162+ PsiParameterList parameterList = method .getParameterList ();
163+ PsiParameter [] parameters = parameterList .getParameters ();
164+ for (PsiParameter parameter : parameters ) {
180165 checkParameter (method , parameter );
181166 }
182167 }
@@ -185,14 +170,14 @@ private void checkParameter(PsiMethod method, PsiParameter parameter) {
185170 if (!parameter .hasModifierProperty (PsiModifier .FINAL )) {
186171 return ;
187172 }
188- final PsiClass containingClass = method .getContainingClass ();
173+ PsiClass containingClass = method .getContainingClass ();
189174 if (containingClass != null ) {
190175 if (containingClass .isInterface () || containingClass .isAnnotationType ()) {
191176 registerModifierError (PsiModifier .FINAL , parameter , parameter , PsiModifier .FINAL );
192177 return ;
193178 }
194179 }
195- if (method .hasModifierProperty ( PsiModifier . ABSTRACT )) {
180+ if (method .isAbstract ( )) {
196181 registerModifierError (PsiModifier .FINAL , parameter , parameter , PsiModifier .FINAL );
197182 return ;
198183 }
@@ -206,15 +191,15 @@ private void checkParameter(PsiMethod method, PsiParameter parameter) {
206191 }
207192
208193 @ Override
209- public void visitTryStatement (PsiTryStatement statement ) {
194+ public void visitTryStatement (@ Nonnull PsiTryStatement statement ) {
210195 super .visitTryStatement (statement );
211196 if (onlyWarnOnAbstractMethods || !reportParameters ) {
212197 return ;
213198 }
214- final PsiCatchSection [] catchSections = statement .getCatchSections ();
199+ PsiCatchSection [] catchSections = statement .getCatchSections ();
215200 for (PsiCatchSection catchSection : catchSections ) {
216- final PsiParameter parameter = catchSection .getParameter ();
217- final PsiCodeBlock catchBlock = catchSection .getCatchBlock ();
201+ PsiParameter parameter = catchSection .getParameter ();
202+ PsiCodeBlock catchBlock = catchSection .getCatchBlock ();
218203 if (parameter == null || catchBlock == null ) {
219204 continue ;
220205 }
@@ -228,12 +213,12 @@ public void visitTryStatement(PsiTryStatement statement) {
228213 }
229214
230215 @ Override
231- public void visitForeachStatement (PsiForeachStatement statement ) {
216+ public void visitForeachStatement (@ Nonnull PsiForeachStatement statement ) {
232217 super .visitForeachStatement (statement );
233218 if (onlyWarnOnAbstractMethods || !reportParameters ) {
234219 return ;
235220 }
236- final PsiParameter parameter = statement .getIterationParameter ();
221+ PsiParameter parameter = statement .getIterationParameter ();
237222 if (!parameter .hasModifierProperty (PsiModifier .FINAL )) {
238223 return ;
239224 }
0 commit comments