From 190c0e5ca6cff056a136bc2c17f7678eb10686c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20K=C3=BChne?= Date: Tue, 19 Mar 2002 20:26:02 +0000 Subject: [PATCH] Fixed bug introduced during cleanup of duplicate code: Reader cannot be reused by fallback lexer, it would never see the characters that have been consumed before the RecognitionException in the first parsing attempt. Also added comment why the JDK 1.4 grammar is tried first. --- .../com/puppycrawl/tools/checkstyle/Checker.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java index d26cb3469..58074f0d7 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java @@ -229,10 +229,14 @@ public class Checker try { fireFileStarted(aFileName); final String[] lines = getLines(aFileName); - final Reader sar = new StringArrayReader(lines); VerifierSingleton.getInstance().clearMessages(); VerifierSingleton.getInstance().setLines(lines); try { + // try the 1.4 grammar first, this will succeed for + // all code that compiles without any warnings in JDK 1.4, + // that should cover most cases + + final Reader sar = new StringArrayReader(lines); final GeneratedJava14Lexer jl = new GeneratedJava14Lexer(sar); jl.setFilename(aFileName); final GeneratedJava14Recognizer jr = @@ -243,11 +247,12 @@ public class Checker } catch (RecognitionException re) { // Parsing might have failed because the checked - // filecontains "assert" statement. Retry with a + // file contains "assert" as an identifier. Retry with a // grammar that treats "assert" as an identifier // and not as a keyword // Arghh - the pain - duplicate code! + final Reader sar = new StringArrayReader(lines); final GeneratedJavaLexer jl = new GeneratedJavaLexer(sar); jl.setFilename(aFileName); final GeneratedJavaRecognizer jr =