Issue #1438: Fix handling finally in FallThroughCheck
This commit is contained in:
parent
1b5132b7f8
commit
2bd61975df
|
|
@ -50,7 +50,6 @@ public class FallThroughTest extends BaseCheckTestSupport {
|
|||
"53:13: " + msg,
|
||||
"70:13: " + msg,
|
||||
"87:13: " + msg,
|
||||
"105:13: " + msg,
|
||||
"123:13: " + msg,
|
||||
"179:11: " + msg,
|
||||
"369:11: " + msg,
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public class FallThroughInput
|
|||
} finally {
|
||||
i++;
|
||||
}
|
||||
case 23: //warn
|
||||
case 23:
|
||||
switch (j) {
|
||||
case 1:
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -272,20 +272,25 @@ public class FallThroughCheck extends Check {
|
|||
private boolean checkTry(final DetailAST ast, boolean useBreak,
|
||||
boolean useContinue) {
|
||||
final DetailAST finalStmt = ast.getLastChild();
|
||||
boolean isTerminated = false;
|
||||
if (finalStmt.getType() == TokenTypes.LITERAL_FINALLY) {
|
||||
return isTerminated(finalStmt.findFirstToken(TokenTypes.SLIST),
|
||||
isTerminated = isTerminated(finalStmt.findFirstToken(TokenTypes.SLIST),
|
||||
useBreak, useContinue);
|
||||
}
|
||||
|
||||
boolean isTerminated = isTerminated(ast.getFirstChild(),
|
||||
useBreak, useContinue);
|
||||
if (!isTerminated) {
|
||||
isTerminated = isTerminated(ast.getFirstChild(),
|
||||
useBreak, useContinue);
|
||||
|
||||
DetailAST catchStmt = ast.findFirstToken(TokenTypes.LITERAL_CATCH);
|
||||
while (catchStmt != null && isTerminated) {
|
||||
final DetailAST catchBody =
|
||||
catchStmt.findFirstToken(TokenTypes.SLIST);
|
||||
isTerminated &= isTerminated(catchBody, useBreak, useContinue);
|
||||
catchStmt = catchStmt.getNextSibling();
|
||||
DetailAST catchStmt = ast.findFirstToken(TokenTypes.LITERAL_CATCH);
|
||||
while (catchStmt != null
|
||||
&& isTerminated
|
||||
&& catchStmt.getType() == TokenTypes.LITERAL_CATCH) {
|
||||
final DetailAST catchBody =
|
||||
catchStmt.findFirstToken(TokenTypes.SLIST);
|
||||
isTerminated = isTerminated(catchBody, useBreak, useContinue);
|
||||
catchStmt = catchStmt.getNextSibling();
|
||||
}
|
||||
}
|
||||
return isTerminated;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport {
|
|||
"53:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"70:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"87:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"105:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"123:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"179:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"369:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
|
|
@ -76,7 +75,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport {
|
|||
"53:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"70:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"87:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"105:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"123:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"123:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST),
|
||||
"179:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
|
|
@ -108,7 +106,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport {
|
|||
"53:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"70:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"87:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"105:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"123:13: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"145:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"170:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
|
|
@ -116,7 +113,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport {
|
|||
"186:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"204:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"222:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"241:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"252:26: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"266:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
"281:11: " + getCheckMessage(MSG_FALL_THROUGH),
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public class InputFallThrough
|
|||
} finally {
|
||||
i++;
|
||||
}
|
||||
case 23: //fall through!!!
|
||||
case 23:
|
||||
switch (j) {
|
||||
case 1:
|
||||
continue;
|
||||
|
|
@ -237,7 +237,7 @@ public class InputFallThrough
|
|||
} finally {
|
||||
i++;
|
||||
}
|
||||
/* fallthru */
|
||||
|
||||
case 23:
|
||||
switch (j) {
|
||||
case 1:
|
||||
|
|
|
|||
Loading…
Reference in New Issue