Hi there, well, another thing I need to tweak in the compiler is to change the way the errors and warnings are reported.
I actually have a trick which so far seems to work and which I bumped into years ago. It looks like this (again removed the self-evident parts); as you can see, it is far from elegant: === @GroovyASTTransformation(phase = CompilePhase.INITIALIZATION) class ErrorReporterOverrideAST extends ASTT { void visitNodes(ASTNode[] nodes, SourceUnit su) { ErrorCollectorProxy ecproxy=ErrorCollectorProxy.newInstance(su.configuration) ecproxy.su=su su.errorCollector=ecproxy } } @InheritConstructors class ErrorCollectorProxy extends ErrorCollector { SourceUnit su void _processSyntaxException(SyntaxException exc,SourceUnit ovrdsu=nil) { ... own processing and report ... } void _processMessage(Message message) { if (message in SyntaxErrorMessage) _processSyntaxException(message.cause) else { ... own processing and report ... } } void addError(Message message) { _processMessage(message) } void addError(Message message, boolean fatal) { _processMessage(message) } void addErrorAndContinue(Message message) { _processMessage(message) } void addErrorAndContinue(SyntaxException error, SourceUnit source) { _processSyntaxException(error,source) } void addException(java.lang.Exception cause, SourceUnit source) { ... own processing and report ... } void addFatalError(Message message) { _processMessage(message) } void addWarning(WarningMessage message) { ... own processing and report ... } } === The question is, can't it be done in some more elegant and robust way? E.g., not through and ASTT but simply using a compilation customizer (I have checked, found none, alas). Or at least, with just one override point general enough to be sure I won't miss errors in future Groovy releases, or something like that? Sufficient if it works Groovy 3+ only -- I won't change the ASTTs in my old projects anymore, but would like to clean up the newly refactored ones far as reasonably possible. Thanks! OC