From 495d54c7532363c906bb2b1acf4e010663d6693f Mon Sep 17 00:00:00 2001 From: Baratali Izmailov Date: Mon, 10 Aug 2015 05:39:30 -0400 Subject: [PATCH] Issue #1293. VariableDeclarationUsageCheck refactoring. Useless variable check in 'switch' statement --- ...VariableDeclarationUsageDistanceCheck.java | 79 +++++++------------ 1 file changed, 29 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java index 4aded473f..df97e5c13 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/VariableDeclarationUsageDistanceCheck.java @@ -650,31 +650,28 @@ public class VariableDeclarationUsageDistanceCheck extends Check { DetailAST block, DetailAST variable) { DetailAST firstNodeInsideBlock = null; - if (!isVariableInOperatorExpr(block, variable)) { - DetailAST currentNode = block - .findFirstToken(TokenTypes.CASE_GROUP); - final List variableUsageExpressions = - new ArrayList<>(); + DetailAST currentNode = block + .findFirstToken(TokenTypes.CASE_GROUP); + final List variableUsageExpressions = + new ArrayList<>(); - // Checking variable usage inside all CASE blocks. - while (currentNode != null - && currentNode.getType() == TokenTypes.CASE_GROUP) { - final DetailAST lastNodeInCaseGroup = - currentNode.getLastChild(); + // Checking variable usage inside all CASE blocks. + while (currentNode.getType() == TokenTypes.CASE_GROUP) { + final DetailAST lastNodeInCaseGroup = + currentNode.getLastChild(); - if (isChild(lastNodeInCaseGroup, variable)) { - variableUsageExpressions.add(lastNodeInCaseGroup); - } - currentNode = currentNode.getNextSibling(); + if (isChild(lastNodeInCaseGroup, variable)) { + variableUsageExpressions.add(lastNodeInCaseGroup); } + currentNode = currentNode.getNextSibling(); + } - // If variable usage exists in several related blocks, then - // firstNodeInsideBlock = null, otherwise if variable usage exists - // only inside one block, then get node from - // variableUsageExpressions. - if (variableUsageExpressions.size() == 1) { - firstNodeInsideBlock = variableUsageExpressions.get(0); - } + // If variable usage exists in several related blocks, then + // firstNodeInsideBlock = null, otherwise if variable usage exists + // only inside one block, then get node from + // variableUsageExpressions. + if (variableUsageExpressions.size() == 1) { + firstNodeInsideBlock = variableUsageExpressions.get(0); } return firstNodeInsideBlock; @@ -771,39 +768,21 @@ public class VariableDeclarationUsageDistanceCheck extends Check { exprBetweenBrackets = exprBetweenBrackets.getNextSibling(); } - // Variable may be met in ELSE declaration or in CASE declaration. + // Variable may be met in ELSE declaration // So, check variable usage in these declarations. - if (!isVarInOperatorDeclr) { - switch (operator.getType()) { - case TokenTypes.LITERAL_IF: - final DetailAST elseBlock = operator.getLastChild(); + if (!isVarInOperatorDeclr && operator.getType() == TokenTypes.LITERAL_IF) { + final DetailAST elseBlock = operator.getLastChild(); - if (elseBlock.getType() == TokenTypes.LITERAL_ELSE) { - // Get IF followed by ELSE - final DetailAST firstNodeInsideElseBlock = elseBlock.getFirstChild(); + if (elseBlock.getType() == TokenTypes.LITERAL_ELSE) { + // Get IF followed by ELSE + final DetailAST firstNodeInsideElseBlock = elseBlock.getFirstChild(); - if (firstNodeInsideElseBlock.getType() == TokenTypes.LITERAL_IF) { - isVarInOperatorDeclr |= isVariableInOperatorExpr(firstNodeInsideElseBlock, variable); - } + if (firstNodeInsideElseBlock.getType() == TokenTypes.LITERAL_IF) { + isVarInOperatorDeclr |= + isVariableInOperatorExpr( + firstNodeInsideElseBlock, + variable); } - break; - - case TokenTypes.LITERAL_SWITCH: - DetailAST currentCaseBlock = operator.findFirstToken(TokenTypes.CASE_GROUP); - - while (currentCaseBlock != null && currentCaseBlock.getType() == TokenTypes.CASE_GROUP) { - final DetailAST firstNodeInsideCaseBlock = currentCaseBlock.getFirstChild(); - - if (isChild(firstNodeInsideCaseBlock, variable)) { - isVarInOperatorDeclr = true; - break; - } - currentCaseBlock = currentCaseBlock.getNextSibling(); - } - break; - - default: - // no code } }