From a0465f179e28b0a022f2b6e66786e07bc34ef920 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Sun, 23 Jun 2019 11:25:52 +0200 Subject: [PATCH] IG: don't warn about unnecessary final on compile-time constants (IDEA-210351) GitOrigin-RevId: 337f6b6d55eacf3c7b259ffa1f6661527ce57f54 --- ...inalOnLocalVariableOrParameterInspection.java | 7 ++++--- ...necessaryFinalOnLocalVariableOrParameter.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java index a5e295589779..e6d14f89f857 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2017 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2019 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -195,8 +195,9 @@ public class UnnecessaryFinalOnLocalVariableOrParameterInspection extends BaseIn check(parameter); } - private boolean isNecessaryFinal(PsiVariable parameter, PsiElement context) { - return !PsiUtil.isLanguageLevel8OrHigher(parameter) && VariableAccessUtils.variableIsUsedInInnerClass(parameter, context); + private boolean isNecessaryFinal(PsiVariable variable, PsiElement context) { + return PsiUtil.isConstantExpression(variable.getInitializer()) || + !PsiUtil.isLanguageLevel8OrHigher(variable) && VariableAccessUtils.variableIsUsedInInnerClass(variable, context); } private void check(PsiParameter parameter) { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_final_on_local_variable_or_parameter/UnnecessaryFinalOnLocalVariableOrParameter.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_final_on_local_variable_or_parameter/UnnecessaryFinalOnLocalVariableOrParameter.java index b21ebfcedb1d..01aee5ad090f 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_final_on_local_variable_or_parameter/UnnecessaryFinalOnLocalVariableOrParameter.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/unnecessary_final_on_local_variable_or_parameter/UnnecessaryFinalOnLocalVariableOrParameter.java @@ -36,4 +36,20 @@ public class UnnecessaryFinalOnLocalVariableOrParameter { } } } +} +class Sample { + + public static void main(String[] args) { + final int ALPHA_OPAQUE = (short) 0xFFFF; // IDEA suggests to remove final + final int ALPHA_TRANSLUCENT = (short) 0; // IDEA suggests to remove final + + int size = 5; + short[][] data = { + new short[size], + new short[size] + }; + + data[1][1] = ALPHA_TRANSLUCENT; + data[1][1] = ALPHA_OPAQUE; + } } \ No newline at end of file