Skip to content

Commit

Permalink
Update CodeGenPipeline.process to check for errors before writing out…
Browse files Browse the repository at this point in the history
…put files
  • Loading branch information
sharwell committed Aug 9, 2014
1 parent 4a57ed6 commit 8e69a5b
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions tool/src/org/antlr/v4/codegen/CodeGenPipeline.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,23 +64,44 @@ public void process() {
}
}

// all templates are generated in memory to report the most complete
// error information possible, but actually writing output files stops
// after the first error is reported
int errorCount = g.tool.errMgr.getNumErrors();

if ( g.isLexer() ) {
ST lexer = gen.generateLexer();
writeRecognizer(lexer, gen);
if (g.tool.errMgr.getNumErrors() == errorCount) {
writeRecognizer(lexer, gen);
}
}
else {
ST parser = gen.generateParser();
writeRecognizer(parser, gen);
if (g.tool.errMgr.getNumErrors() == errorCount) {
writeRecognizer(parser, gen);
}
if ( g.tool.gen_listener ) {
gen.writeListener(gen.generateListener());
ST listener = gen.generateListener();
if (g.tool.errMgr.getNumErrors() == errorCount) {
gen.writeListener(listener);
}
if (gen.getTarget().wantsBaseListener()) {
gen.writeBaseListener(gen.generateBaseListener());
ST baseListener = gen.generateBaseListener();
if (g.tool.errMgr.getNumErrors() == errorCount) {
gen.writeBaseListener(baseListener);
}
}
}
if ( g.tool.gen_visitor ) {
gen.writeVisitor(gen.generateVisitor());
ST visitor = gen.generateVisitor();
if (g.tool.errMgr.getNumErrors() == errorCount) {
gen.writeVisitor(visitor);
}
if (gen.getTarget().wantsBaseVisitor()) {
gen.writeBaseVisitor(gen.generateBaseVisitor());
ST baseVisitor = gen.generateBaseVisitor();
if (g.tool.errMgr.getNumErrors() == errorCount) {
gen.writeBaseVisitor(baseVisitor);
}
}
}
gen.writeHeaderFile();
Expand Down

0 comments on commit 8e69a5b

Please sign in to comment.