Issue #3617: make FinalLocalVariable not check multi-catch vars
This commit is contained in:
parent
636ae05d05
commit
4d214096fc
|
|
@ -195,7 +195,8 @@ public class FinalLocalVariableCheck extends AbstractCheck {
|
|||
if (!isInLambda(ast)
|
||||
&& !ast.branchContains(TokenTypes.FINAL)
|
||||
&& !isInAbstractOrNativeMethod(ast)
|
||||
&& !ScopeUtils.isInInterfaceBlock(ast)) {
|
||||
&& !ScopeUtils.isInInterfaceBlock(ast)
|
||||
&& !isMultipleTypeCatch(ast)) {
|
||||
insertParameter(ast);
|
||||
}
|
||||
break;
|
||||
|
|
@ -468,6 +469,16 @@ public class FinalLocalVariableCheck extends AbstractCheck {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if given parameter definition is a multiple type catch.
|
||||
* @param parameterDefAst parameter definition
|
||||
* @return true if it is a multiple type catch, false otherwise
|
||||
*/
|
||||
private boolean isMultipleTypeCatch(DetailAST parameterDefAst) {
|
||||
final DetailAST typeAst = parameterDefAst.findFirstToken(TokenTypes.TYPE);
|
||||
return typeAst.getFirstChild().getType() == TokenTypes.BOR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the final variable candidate should be removed from the list of final local variable
|
||||
* candidates.
|
||||
|
|
|
|||
|
|
@ -239,4 +239,13 @@ public class FinalLocalVariableCheckTest
|
|||
verify(checkConfig, getPath("InputFinalLocalVariableMultipleAndNestedConditions.java"),
|
||||
expected);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMultiTypeCatch() throws Exception {
|
||||
final DefaultConfiguration checkConfig = createCheckConfig(FinalLocalVariableCheck.class);
|
||||
checkConfig.addAttribute("tokens", "PARAMETER_DEF,VARIABLE_DEF");
|
||||
final String[] expected = CommonUtils.EMPTY_STRING_ARRAY;
|
||||
verify(checkConfig, getPath("InputFinalLocalVariableMultiCatch.java"),
|
||||
expected);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
package com.puppycrawl.tools.checkstyle.checks.coding;
|
||||
|
||||
public class InputFinalLocalVariableMultiCatch {
|
||||
public void demo() throws Throwable {
|
||||
try {
|
||||
// do nothing
|
||||
} catch (final NumberFormatException ex) {
|
||||
// do nothing
|
||||
} catch (IllegalStateException | NullPointerException ex) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue