[cs] CPD: fix issue where semicolons following using directives were not filtered

This commit is contained in:
Maikel Steneker
2020-03-06 12:17:17 +01:00
parent d8e04ecc11
commit 6a7e98924b

View File

@@ -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;
}
}
}