diff --git a/tool/test/org/antlr/v4/test/BaseTest.java b/tool/test/org/antlr/v4/test/BaseTest.java index a26d63303..333452ab3 100644 --- a/tool/test/org/antlr/v4/test/BaseTest.java +++ b/tool/test/org/antlr/v4/test/BaseTest.java @@ -54,6 +54,7 @@ import org.antlr.v4.runtime.misc.Interval; import org.antlr.v4.runtime.misc.Nullable; import org.antlr.v4.semantics.SemanticPipeline; import org.antlr.v4.tool.ANTLRMessage; +import org.antlr.v4.tool.DefaultToolListener; import org.antlr.v4.tool.DOTGenerator; import org.antlr.v4.tool.Grammar; import org.antlr.v4.tool.GrammarSemanticsMessage; @@ -383,7 +384,7 @@ public abstract class BaseTest { /** Return true if all is ok, no errors */ - protected boolean antlr(String fileName, String grammarFileName, String grammarStr, String... extraOptions) { + protected boolean antlr(String fileName, String grammarFileName, String grammarStr, boolean defaultListener, String... extraOptions) { boolean allIsWell = true; System.out.println("dir "+tmpdir); mkdir(tmpdir); @@ -401,9 +402,12 @@ public abstract class BaseTest { ErrorQueue equeue = new ErrorQueue(); Tool antlr = newTool(optionsA); antlr.addListener(equeue); + if (defaultListener) { + antlr.addListener(new DefaultToolListener(antlr)); + } antlr.processGrammarsOnCommandLine(); - if ( equeue.errors.size()>0 ) { - allIsWell = false; + allIsWell = equeue.errors.isEmpty(); + if ( !defaultListener && !equeue.errors.isEmpty() ) { System.err.println("antlr reports errors from "+options); for (int i = 0; i < equeue.errors.size(); i++) { ANTLRMessage msg = equeue.errors.get(i); @@ -413,6 +417,13 @@ public abstract class BaseTest { System.out.println(grammarStr); System.out.println("###"); } + if ( !defaultListener && !equeue.warnings.isEmpty() ) { + System.err.println("antlr reports warnings from "+options); + for (int i = 0; i < equeue.warnings.size(); i++) { + ANTLRMessage msg = equeue.warnings.get(i); + System.err.println(msg); + } + } } catch (Exception e) { allIsWell = false; @@ -478,10 +489,24 @@ public abstract class BaseTest { @Nullable String parserName, String lexerName, String... extraOptions) + { + return rawGenerateAndBuildRecognizer(grammarFileName, grammarStr, parserName, lexerName, false, extraOptions); + } + + /** Return true if all is well */ + protected boolean rawGenerateAndBuildRecognizer(String grammarFileName, + String grammarStr, + @Nullable String parserName, + String lexerName, + boolean defaultListener, + String... extraOptions) { boolean allIsWell = - antlr(grammarFileName, grammarFileName, grammarStr, extraOptions); - boolean ok; + antlr(grammarFileName, grammarFileName, grammarStr, defaultListener, extraOptions); + if (!allIsWell) { + return false; + } + List files = new ArrayList(); if ( lexerName!=null ) { files.add(lexerName+".java"); @@ -499,8 +524,7 @@ public abstract class BaseTest { files.add(grammarFileName.substring(0, grammarFileName.lastIndexOf('.'))+"BaseParseListener.java"); } } - ok = compile(files.toArray(new String[files.size()])); - if ( !ok ) { allIsWell = false; } + allIsWell = compile(files.toArray(new String[files.size()])); return allIsWell; } diff --git a/tool/test/org/antlr/v4/test/TestCompositeGrammars.java b/tool/test/org/antlr/v4/test/TestCompositeGrammars.java index ea2be8676..d2245bbc4 100644 --- a/tool/test/org/antlr/v4/test/TestCompositeGrammars.java +++ b/tool/test/org/antlr/v4/test/TestCompositeGrammars.java @@ -653,7 +653,7 @@ public class TestCompositeGrammars extends BaseTest { "s : a ;\n" + "B : 'b' ;" + // defines B from inherited token space "WS : (' '|'\\n') {skip();} ;\n" ; - boolean ok = antlr("M.g4", "M.g4", master); + boolean ok = antlr("M.g4", "M.g4", master, false); boolean expecting = true; // should be ok assertEquals(expecting, ok); } diff --git a/tool/test/org/antlr/v4/test/TestPerformance.java b/tool/test/org/antlr/v4/test/TestPerformance.java index 84773cb7a..65bbe9b0d 100644 --- a/tool/test/org/antlr/v4/test/TestPerformance.java +++ b/tool/test/org/antlr/v4/test/TestPerformance.java @@ -433,7 +433,7 @@ public class TestPerformance extends BaseTest { extraOptions.add("-atn"); } String[] extraOptionsArray = extraOptions.toArray(new String[extraOptions.size()]); - boolean success = rawGenerateAndBuildRecognizer(grammarFileName, body, "JavaParser", "JavaLexer", extraOptionsArray); + boolean success = rawGenerateAndBuildRecognizer(grammarFileName, body, "JavaParser", "JavaLexer", true, extraOptionsArray); assertTrue(success); }