diff --git a/pom.xml b/pom.xml
index 61c1fa009..5f3168388 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1097,7 +1097,6 @@
.*.checks.UniquePropertiesCheck\$.*7590
.*.checks.coding.DeclarationOrderCheck8293
- .*.checks.coding.FinalLocalVariableCheck96100
.*.checks.coding.IllegalInstantiationCheck8197
.*.checks.coding.ReturnCountCheck5574
.*.checks.coding.VariableDeclarationUsageDistanceCheck9098
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java
index 7e448f68d..904db6bbd 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheck.java
@@ -189,7 +189,7 @@ public class FinalLocalVariableCheck extends Check {
break;
case TokenTypes.VARIABLE_DEF:
if (ast.getParent().getType() != TokenTypes.OBJBLOCK
- && isVariableInForInit(ast)
+ && !isVariableInForInit(ast)
&& shouldCheckEnhancedForLoopVariable(ast)
&& !ast.branchContains(TokenTypes.FINAL)) {
insertVariable(ast);
@@ -205,6 +205,7 @@ public class FinalLocalVariableCheck extends Check {
break;
default:
+ throw new IllegalStateException("Incorrect token type");
}
}
@@ -240,7 +241,7 @@ public class FinalLocalVariableCheck extends Check {
* @return true if variable is defined in {@link TokenTypes#FOR_INIT for-loop init}
*/
private static boolean isVariableInForInit(DetailAST variableDef) {
- return variableDef.getParent().getType() != TokenTypes.FOR_INIT;
+ return variableDef.getParent().getType() == TokenTypes.FOR_INIT;
}
/**
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheckTest.java
index 42417b398..9a37ba067 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FinalLocalVariableCheckTest.java
@@ -23,10 +23,13 @@ import static com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCh
import java.io.File;
+import org.junit.Assert;
import org.junit.Test;
import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
+import com.puppycrawl.tools.checkstyle.api.DetailAST;
+import com.puppycrawl.tools.checkstyle.api.TokenTypes;
public class FinalLocalVariableCheckTest
extends BaseCheckTestSupport {
@@ -145,4 +148,20 @@ public class FinalLocalVariableCheckTest
};
verify(checkConfig, getPath("coding/InputFinalLocalVariableNameShadowing.java"), expected);
}
+
+ @Test
+ public void testImproperToken() throws Exception {
+ FinalLocalVariableCheck check = new FinalLocalVariableCheck();
+
+ DetailAST lambdaAst = new DetailAST();
+ lambdaAst.setType(TokenTypes.LAMBDA);
+
+ try {
+ check.visitToken(lambdaAst);
+ Assert.fail();
+ }
+ catch (IllegalStateException e) {
+ // it is OK
+ }
+ }
}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFinalLocalVariable.java b/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFinalLocalVariable.java
index 1ba7f64c0..b892aa8ff 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFinalLocalVariable.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFinalLocalVariable.java
@@ -163,3 +163,11 @@ class class1
}
}
+
+class A {
+ {
+ int y = 0;
+ y = 9;
+ }
+}
+