forked from phoedos/pmd
CPD: Fix error handling for lexical errors
* TokenMgrError must not be caught by the tokenizer. This is handled by CPD itself * The token managers need to know the filename for proper error messages
This commit is contained in:
@ -10,7 +10,6 @@ import java.io.StringReader;
|
||||
|
||||
import net.sourceforge.pmd.cpd.token.JavaCCTokenFilter;
|
||||
import net.sourceforge.pmd.cpd.token.TokenFilter;
|
||||
import net.sourceforge.pmd.lang.ast.TokenMgrError;
|
||||
import net.sourceforge.pmd.lang.objectivec.ObjectiveCTokenManager;
|
||||
import net.sourceforge.pmd.lang.objectivec.ast.Token;
|
||||
|
||||
@ -23,20 +22,18 @@ public class ObjectiveCTokenizer implements Tokenizer {
|
||||
public void tokenize(SourceCode sourceCode, Tokens tokenEntries) {
|
||||
StringBuilder buffer = sourceCode.getCodeBuffer();
|
||||
try (Reader reader = new StringReader(buffer.toString())) {
|
||||
final TokenFilter tokenFilter = new JavaCCTokenFilter(new ObjectiveCTokenManager(reader));
|
||||
ObjectiveCTokenManager tokenManager = new ObjectiveCTokenManager(reader);
|
||||
tokenManager.setFileName(sourceCode.getFileName());
|
||||
final TokenFilter tokenFilter = new JavaCCTokenFilter(tokenManager);
|
||||
Token currentToken = (Token) tokenFilter.getNextToken();
|
||||
while (currentToken != null) {
|
||||
tokenEntries.add(new TokenEntry(currentToken.image, sourceCode.getFileName(), currentToken.beginLine));
|
||||
currentToken = (Token) tokenFilter.getNextToken();
|
||||
}
|
||||
tokenEntries.add(TokenEntry.getEOF());
|
||||
System.err.println("Added " + sourceCode.getFileName());
|
||||
} catch (TokenMgrError err) {
|
||||
err.printStackTrace();
|
||||
System.err.println("Skipping " + sourceCode.getFileName() + " due to parse error");
|
||||
tokenEntries.add(TokenEntry.getEOF());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
tokenEntries.add(TokenEntry.getEOF());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user