Source files should not have any duplicated blocks. Issue #46

This commit is contained in:
Ilja Dubinin 2015-08-20 00:35:43 +01:00 committed by Roman Ivanov
parent bcaa9d81a7
commit 0fe31dfdf9
1 changed files with 29 additions and 27 deletions

View File

@ -376,24 +376,12 @@ public final class TreeWalker
* @param astState state of AST.
*/
private void notifyVisit(DetailAST ast, AstState astState) {
Collection<Check> visitors;
final String tokenType = Utils.getTokenName(ast.getType());
final Collection<Check> visitors = getListOfChecks(ast, astState);
if (astState == AstState.WITH_COMMENTS) {
if (!tokenToCommentChecks.containsKey(tokenType)) {
return;
if (visitors != null) {
for (Check check : visitors) {
check.visitToken(ast);
}
visitors = tokenToCommentChecks.get(tokenType);
}
else {
if (!tokenToOrdinaryChecks.containsKey(tokenType)) {
return;
}
visitors = tokenToOrdinaryChecks.get(tokenType);
}
for (Check check : visitors) {
check.visitToken(ast);
}
}
@ -404,25 +392,39 @@ public final class TreeWalker
* @param astState state of AST.
*/
private void notifyLeave(DetailAST ast, AstState astState) {
Collection<Check> visitors;
final Collection<Check> visitors = getListOfChecks(ast, astState);
if (visitors != null) {
for (Check check : visitors) {
check.leaveToken(ast);
}
}
}
/**
* Method returns list of checks
*
* @param ast
* the node to notify for
* @param astState
* state of AST.
* @return list of visitors
*/
private Collection<Check> getListOfChecks(DetailAST ast, AstState astState) {
Collection<Check> visitors = null;
final String tokenType = Utils.getTokenName(ast.getType());
if (astState == AstState.WITH_COMMENTS) {
if (!tokenToCommentChecks.containsKey(tokenType)) {
return;
if (tokenToCommentChecks.containsKey(tokenType)) {
visitors = tokenToCommentChecks.get(tokenType);
}
visitors = tokenToCommentChecks.get(tokenType);
}
else {
if (!tokenToOrdinaryChecks.containsKey(tokenType)) {
return;
if (tokenToOrdinaryChecks.containsKey(tokenType)) {
visitors = tokenToOrdinaryChecks.get(tokenType);
}
visitors = tokenToOrdinaryChecks.get(tokenType);
}
for (Check check : visitors) {
check.leaveToken(ast);
}
return visitors;
}
/**