Pull error reporting outside of try/finally to ensure errors are not hidden

This commit is contained in:
Sam Harwell 2012-03-16 08:07:46 -05:00
parent ea7037dd2d
commit ea434982fb
1 changed files with 21 additions and 19 deletions

View File

@ -358,37 +358,39 @@ public abstract class BaseTest {
System.out.println("dir "+tmpdir); System.out.println("dir "+tmpdir);
mkdir(tmpdir); mkdir(tmpdir);
writeFile(tmpdir, fileName, grammarStr); writeFile(tmpdir, fileName, grammarStr);
ErrorQueue equeue = new ErrorQueue();
final List<String> options = new ArrayList<String>();
Collections.addAll(options, extraOptions);
options.add("-o");
options.add(tmpdir);
options.add("-lib");
options.add(tmpdir);
options.add(new File(tmpdir,grammarFileName).toString());
try { try {
final List<String> options = new ArrayList<String>();
Collections.addAll(options, extraOptions);
options.add("-o");
options.add(tmpdir);
options.add("-lib");
options.add(tmpdir);
options.add(new File(tmpdir,grammarFileName).toString());
final String[] optionsA = new String[options.size()]; final String[] optionsA = new String[options.size()];
options.toArray(optionsA); options.toArray(optionsA);
ErrorQueue equeue = new ErrorQueue();
Tool antlr = newTool(optionsA); Tool antlr = newTool(optionsA);
antlr.addListener(equeue); antlr.addListener(equeue);
antlr.processGrammarsOnCommandLine(); antlr.processGrammarsOnCommandLine();
if ( equeue.errors.size()>0 ) {
allIsWell = false;
System.err.println("antlr reports errors from "+options);
for (int i = 0; i < equeue.errors.size(); i++) {
ANTLRMessage msg = equeue.errors.get(i);
System.err.println(msg);
}
System.out.println("!!!\ngrammar:");
System.out.println(grammarStr);
System.out.println("###");
}
} }
catch (Exception e) { catch (Exception e) {
allIsWell = false; allIsWell = false;
System.err.println("problems building grammar: "+e); System.err.println("problems building grammar: "+e);
e.printStackTrace(System.err); e.printStackTrace(System.err);
} }
if ( equeue.errors.size()>0 ) {
allIsWell = false;
System.err.println("antlr reports errors from "+options);
for (int i = 0; i < equeue.errors.size(); i++) {
ANTLRMessage msg = equeue.errors.get(i);
System.err.println(msg);
}
System.out.println("!!!\ngrammar:");
System.out.println(grammarStr);
System.out.println("###");
}
return allIsWell; return allIsWell;
} }