[cs] CPD: fix issue where semicolons following using directives were not filtered
This commit is contained in:
@@ -58,6 +58,7 @@ public class CsTokenizer extends AntlrTokenizer {
|
||||
private final boolean ignoreUsings;
|
||||
private boolean discardingUsings = false;
|
||||
private boolean discardingNL = false;
|
||||
private boolean discardCurrent = false;
|
||||
|
||||
CsTokenFilter(final AntlrTokenManager tokenManager, boolean ignoreUsings) {
|
||||
super(tokenManager);
|
||||
@@ -71,6 +72,7 @@ public class CsTokenizer extends AntlrTokenizer {
|
||||
|
||||
@Override
|
||||
protected void analyzeTokens(final AntlrToken currentToken, final Iterable<AntlrToken> remainingTokens) {
|
||||
discardCurrent = false;
|
||||
skipUsingDirectives(currentToken, remainingTokens);
|
||||
}
|
||||
|
||||
@@ -78,8 +80,9 @@ public class CsTokenizer extends AntlrTokenizer {
|
||||
final int type = currentToken.getType();
|
||||
if (type == CSharpLexer.USING && isUsingDirective(remainingTokens)) {
|
||||
discardingUsings = true;
|
||||
} else if (type == CSharpLexer.SEMICOLON) {
|
||||
} else if (type == CSharpLexer.SEMICOLON && discardingUsings) {
|
||||
discardingUsings = false;
|
||||
discardCurrent = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,7 +150,7 @@ public class CsTokenizer extends AntlrTokenizer {
|
||||
|
||||
@Override
|
||||
protected boolean isLanguageSpecificDiscarding() {
|
||||
return discardingUsings || discardingNL;
|
||||
return discardingUsings || discardingNL || discardCurrent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user