Listen for issues reported by StringTemplate, report them as warnings

This commit is contained in:
Sam Harwell 2012-12-11 08:36:47 -06:00
parent fc3bb61d2d
commit a50c8d9088
3 changed files with 30 additions and 0 deletions

View File

@ -4,6 +4,7 @@ December 11, 2012
* Add -long-messages option; only show exceptions with errors when set * Add -long-messages option; only show exceptions with errors when set
* "warning treated as error" is a one-off error * "warning treated as error" is a one-off error
* Listen for issues reported by StringTemplate, report them as warnings
December 2, 2012 December 2, 2012

View File

@ -39,10 +39,12 @@ import org.antlr.v4.tool.Grammar;
import org.stringtemplate.v4.AutoIndentWriter; import org.stringtemplate.v4.AutoIndentWriter;
import org.stringtemplate.v4.NumberRenderer; import org.stringtemplate.v4.NumberRenderer;
import org.stringtemplate.v4.ST; import org.stringtemplate.v4.ST;
import org.stringtemplate.v4.STErrorListener;
import org.stringtemplate.v4.STGroup; import org.stringtemplate.v4.STGroup;
import org.stringtemplate.v4.STGroupFile; import org.stringtemplate.v4.STGroupFile;
import org.stringtemplate.v4.STWriter; import org.stringtemplate.v4.STWriter;
import org.stringtemplate.v4.StringRenderer; import org.stringtemplate.v4.StringRenderer;
import org.stringtemplate.v4.misc.STMessage;
import java.io.IOException; import java.io.IOException;
import java.io.Writer; import java.io.Writer;
@ -116,6 +118,31 @@ public class CodeGenerator {
templates = new STGroupFile(TEMPLATE_ROOT+"/"+language+"/"+language+".stg"); templates = new STGroupFile(TEMPLATE_ROOT+"/"+language+"/"+language+".stg");
templates.registerRenderer(Integer.class, new NumberRenderer()); templates.registerRenderer(Integer.class, new NumberRenderer());
templates.registerRenderer(String.class, new StringRenderer()); templates.registerRenderer(String.class, new StringRenderer());
templates.setListener(new STErrorListener() {
@Override
public void compileTimeError(STMessage msg) {
reportError(msg);
}
@Override
public void runTimeError(STMessage msg) {
reportError(msg);
}
@Override
public void IOError(STMessage msg) {
reportError(msg);
}
@Override
public void internalError(STMessage msg) {
reportError(msg);
}
private void reportError(STMessage msg) {
tool.errMgr.toolError(ErrorType.STRING_TEMPLATE_WARNING, msg.cause, msg.toString());
}
});
} }
catch (IllegalArgumentException iae) { catch (IllegalArgumentException iae) {
tool.errMgr.toolError(ErrorType.CANNOT_CREATE_TARGET_GENERATOR, tool.errMgr.toolError(ErrorType.CANNOT_CREATE_TARGET_GENERATOR,

View File

@ -61,6 +61,8 @@ public enum ErrorType {
INTERNAL_ERROR(20, "internal error: <arg> <arg2><if(exception&&verbose)>: <exception>" + INTERNAL_ERROR(20, "internal error: <arg> <arg2><if(exception&&verbose)>: <exception>" +
"<stackTrace; separator=\"\\n\"><endif>", ErrorSeverity.ERROR), "<stackTrace; separator=\"\\n\"><endif>", ErrorSeverity.ERROR),
TOKENS_FILE_SYNTAX_ERROR(21, ".tokens file syntax error <arg>:<arg2>", ErrorSeverity.ERROR), TOKENS_FILE_SYNTAX_ERROR(21, ".tokens file syntax error <arg>:<arg2>", ErrorSeverity.ERROR),
STRING_TEMPLATE_WARNING(22, "template error: <arg> <arg2><if(exception&&verbose)>: <exception>" +
"<stackTrace; separator=\"\\n\"><endif>", ErrorSeverity.WARNING),
// Code generation errors // Code generation errors
MISSING_CODE_GEN_TEMPLATES(30, "can't find code generation templates: <arg>", ErrorSeverity.ERROR), MISSING_CODE_GEN_TEMPLATES(30, "can't find code generation templates: <arg>", ErrorSeverity.ERROR),